From ef8f085b47f48136a58dfe878017e86723cdc719 Mon Sep 17 00:00:00 2001 From: HifiExperiments Date: Sun, 5 Jan 2020 02:29:46 -0800 Subject: [PATCH 001/160] support blendshapes on model entities --- libraries/avatars/src/HeadData.cpp | 19 +++----- libraries/avatars/src/HeadData.h | 2 - .../src/RenderableModelEntityItem.cpp | 28 +++++++++++- .../src/RenderableModelEntityItem.h | 9 +++- .../entities/src/EntityItemProperties.cpp | 14 ++++++ libraries/entities/src/EntityItemProperties.h | 1 + libraries/entities/src/EntityPropertyFlags.h | 19 ++++---- libraries/entities/src/ModelEntityItem.cpp | 45 ++++++++++++++++++- libraries/entities/src/ModelEntityItem.h | 10 +++++ libraries/networking/src/udt/PacketHeaders.h | 1 + .../render-utils/src/CauterizedModel.cpp | 7 +-- .../render-utils/src/MeshPartPayload.cpp | 9 ++++ libraries/render-utils/src/MeshPartPayload.h | 1 + libraries/render-utils/src/Model.cpp | 6 ++- libraries/render-utils/src/Model.h | 15 ++----- .../render-utils/src/SoftAttachmentModel.cpp | 7 +-- libraries/render/src/render/Item.h | 6 +++ libraries/shared/src/BlendshapeConstants.cpp | 8 ++++ libraries/shared/src/BlendshapeConstants.h | 17 +++++++ .../KasenAPIExample/src/KasenAPIExample.cpp | 2 +- 20 files changed, 172 insertions(+), 54 deletions(-) diff --git a/libraries/avatars/src/HeadData.cpp b/libraries/avatars/src/HeadData.cpp index 5e8d5c457f..f19ee3de86 100644 --- a/libraries/avatars/src/HeadData.cpp +++ b/libraries/avatars/src/HeadData.cpp @@ -34,7 +34,6 @@ HeadData::HeadData(AvatarData* owningAvatar) : { _userProceduralAnimationFlags.assign((size_t)ProceduralAnimaitonTypeCount, true); _suppressProceduralAnimationFlags.assign((size_t)ProceduralAnimaitonTypeCount, false); - computeBlendshapesLookupMap(); } glm::quat HeadData::getRawOrientation() const { @@ -72,12 +71,6 @@ void HeadData::setOrientation(const glm::quat& orientation) { setHeadOrientation(orientation); } -void HeadData::computeBlendshapesLookupMap(){ - for (int i = 0; i < (int)Blendshapes::BlendshapeCount; i++) { - _blendshapeLookupMap[FACESHIFT_BLENDSHAPES[i]] = i; - } -} - int HeadData::getNumSummedBlendshapeCoefficients() const { int maxSize = std::max(_blendshapeCoefficients.size(), _transientBlendshapeCoefficients.size()); return maxSize; @@ -109,8 +102,8 @@ const QVector& HeadData::getSummedBlendshapeCoefficients() { void HeadData::setBlendshape(QString name, float val) { // Check to see if the named blendshape exists, and then set its value if it does - auto it = _blendshapeLookupMap.find(name); - if (it != _blendshapeLookupMap.end()) { + auto it = blendshapeLookupMap.find(name); + if (it != blendshapeLookupMap.end()) { if (_blendshapeCoefficients.size() <= it.value()) { _blendshapeCoefficients.resize(it.value() + 1); } @@ -135,8 +128,8 @@ void HeadData::setBlendshape(QString name, float val) { } int HeadData::getBlendshapeIndex(const QString& name) { - auto it = _blendshapeLookupMap.find(name); - int index = it != _blendshapeLookupMap.end() ? it.value() : -1; + auto it = blendshapeLookupMap.find(name); + int index = it != blendshapeLookupMap.end() ? it.value() : -1; return index; } @@ -155,8 +148,8 @@ static const QString JSON_AVATAR_HEAD_LOOKAT = QStringLiteral("lookAt"); QJsonObject HeadData::toJson() const { QJsonObject headJson; QJsonObject blendshapesJson; - for (auto name : _blendshapeLookupMap.keys()) { - auto index = _blendshapeLookupMap[name]; + for (auto name : blendshapeLookupMap.keys()) { + auto index = blendshapeLookupMap[name]; float value = 0.0f; if (index < _blendshapeCoefficients.size()) { value += _blendshapeCoefficients[index]; diff --git a/libraries/avatars/src/HeadData.h b/libraries/avatars/src/HeadData.h index 2fa91c0bed..af71fd883d 100644 --- a/libraries/avatars/src/HeadData.h +++ b/libraries/avatars/src/HeadData.h @@ -125,7 +125,6 @@ protected: QVector _blendshapeCoefficients; QVector _transientBlendshapeCoefficients; QVector _summedBlendshapeCoefficients; - QMap _blendshapeLookupMap; AvatarData* _owningAvatar; private: @@ -134,7 +133,6 @@ private: HeadData& operator= (const HeadData&); void setHeadOrientation(const glm::quat& orientation); - void computeBlendshapesLookupMap(); }; #endif // hifi_HeadData_h diff --git a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp index 5fbbdfa0b8..40182a6965 100644 --- a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp @@ -1083,6 +1083,11 @@ uint32_t ModelEntityRenderer::metaFetchMetaSubItems(ItemIDs& subItems) const { return 0; } +void ModelEntityRenderer::handleBlendedVertices(int blendshapeNumber, const QVector& blendshapeOffsets, + const QVector& blendedMeshSizes, const render::ItemIDs& subItemIDs) { + setBlendedVertices(blendshapeNumber, blendshapeOffsets, blendedMeshSizes, subItemIDs); +} + void ModelEntityRenderer::removeFromScene(const ScenePointer& scene, Transaction& transaction) { if (_model) { _model->removeFromScene(scene, transaction); @@ -1251,7 +1256,11 @@ bool ModelEntityRenderer::needsRenderUpdateFromTypedEntity(const TypedEntityPoin if (model && model->isLoaded()) { if (!entity->_dimensionsInitialized || entity->_needsInitialSimulation || !entity->_originalTexturesRead) { return true; - } + } + + if (entity->blendshapesChanged()) { + return true; + } // Check to see if we need to update the model bounds if (entity->needsUpdateModelBounds()) { @@ -1407,6 +1416,11 @@ void ModelEntityRenderer::doRenderUpdateSynchronousTyped(const ScenePointer& sce model->setTagMask(tagMask, scene); } + if (entity->blendshapesChanged()) { + model->setBlendshapeCoefficients(entity->getBlendshapeCoefficientVector()); + model->updateBlendshapes(); + } + // TODO? early exit here when not visible? if (model->canCastShadow() != _canCastShadow) { @@ -1427,7 +1441,8 @@ void ModelEntityRenderer::doRenderUpdateSynchronousTyped(const ScenePointer& sce model->removeFromScene(scene, transaction); render::Item::Status::Getters statusGetters; makeStatusGetters(entity, statusGetters); - model->addToScene(scene, transaction, statusGetters); + using namespace std::placeholders; + model->addToScene(scene, transaction, statusGetters, std::bind(&ModelEntityRenderer::metaBlendshapeOperator, _renderItemID, _1, _2, _3, _4)); entity->bumpAncestorChainRenderableVersion(); processMaterials(); } @@ -1579,3 +1594,12 @@ void ModelEntityRenderer::processMaterials() { } } } + +void ModelEntityRenderer::metaBlendshapeOperator(render::ItemID renderItemID, int blendshapeNumber, const QVector& blendshapeOffsets, + const QVector& blendedMeshSizes, const render::ItemIDs& subItemIDs) { + render::Transaction transaction; + transaction.updateItem(renderItemID, [blendshapeNumber, blendshapeOffsets, blendedMeshSizes, subItemIDs](PayloadProxyInterface& self) { + self.handleBlendedVertices(blendshapeNumber, blendshapeOffsets, blendedMeshSizes, subItemIDs); + }); + AbstractViewStateInterface::instance()->getMain3DScene()->enqueueTransaction(transaction); +} \ No newline at end of file diff --git a/libraries/entities-renderer/src/RenderableModelEntityItem.h b/libraries/entities-renderer/src/RenderableModelEntityItem.h index 0119c7bc26..dfff088c24 100644 --- a/libraries/entities-renderer/src/RenderableModelEntityItem.h +++ b/libraries/entities-renderer/src/RenderableModelEntityItem.h @@ -21,6 +21,7 @@ #include #include #include +#include #include "RenderableEntityItem.h" @@ -131,7 +132,7 @@ private: namespace render { namespace entities { -class ModelEntityRenderer : public TypedEntityRenderer { +class ModelEntityRenderer : public TypedEntityRenderer, public MetaModelPayload { using Parent = TypedEntityRenderer; friend class EntityRenderer; Q_OBJECT @@ -155,6 +156,8 @@ protected: void setKey(bool didVisualGeometryRequestSucceed); virtual ItemKey getKey() override; virtual uint32_t metaFetchMetaSubItems(ItemIDs& subItems) const override; + virtual void handleBlendedVertices(int blendshapeNumber, const QVector& blendshapeOffsets, + const QVector& blendedMeshSizes, const render::ItemIDs& subItemIDs) override; virtual bool needsRenderUpdateFromTypedEntity(const TypedEntityPointer& entity) const override; virtual bool needsRenderUpdate() const override; @@ -198,6 +201,10 @@ private: bool _prevModelLoaded { false }; void processMaterials(); + + static void metaBlendshapeOperator(render::ItemID renderItemID, int blendshapeNumber, const QVector& blendshapeOffsets, + const QVector& blendedMeshSizes, const render::ItemIDs& subItemIDs); + }; } } // namespace diff --git a/libraries/entities/src/EntityItemProperties.cpp b/libraries/entities/src/EntityItemProperties.cpp index 2b8f2b4c14..bfb259c1ba 100644 --- a/libraries/entities/src/EntityItemProperties.cpp +++ b/libraries/entities/src/EntityItemProperties.cpp @@ -525,6 +525,7 @@ EntityPropertyFlags EntityItemProperties::getChangedProperties() const { CHECK_PROPERTY_CHANGE(PROP_JOINT_TRANSLATIONS, jointTranslations); CHECK_PROPERTY_CHANGE(PROP_RELAY_PARENT_JOINTS, relayParentJoints); CHECK_PROPERTY_CHANGE(PROP_GROUP_CULLED, groupCulled); + CHECK_PROPERTY_CHANGE(PROP_BLENDSHAPE_COEFFICIENTS, blendshapeCoefficients); changedProperties += _animation.getChangedProperties(); // Light @@ -980,6 +981,9 @@ EntityPropertyFlags EntityItemProperties::getChangedProperties() const { * compressed in GZ format, in which case the URL ends in ".gz". * @property {Vec3} modelScale - The scale factor applied to the model's dimensions. *

Deprecated: This property is deprecated and will be removed.

+ * @property {string} blendshapeCoefficients - A JSON string of a map of blendshape names to values. Only stores set values. + * When editing this property, only coefficients that you are editing will change; it will not explicitly reset other + * coefficients. * @property {string} textures="" - A JSON string of texture name, URL pairs used when rendering the model in place of the * model's original textures. Use a texture name from the originalTextures property to override that texture. * Only the texture names and URLs to be overridden need be specified; original textures are used where there are no @@ -1704,6 +1708,7 @@ QScriptValue EntityItemProperties::copyToScriptValue(QScriptEngine* engine, bool COPY_PROPERTY_TO_QSCRIPTVALUE(PROP_JOINT_TRANSLATIONS, jointTranslations); COPY_PROPERTY_TO_QSCRIPTVALUE(PROP_RELAY_PARENT_JOINTS, relayParentJoints); COPY_PROPERTY_TO_QSCRIPTVALUE(PROP_GROUP_CULLED, groupCulled); + COPY_PROPERTY_TO_QSCRIPTVALUE(PROP_BLENDSHAPE_COEFFICIENTS, blendshapeCoefficients); if (!psuedoPropertyFlagsButDesiredEmpty) { _animation.copyToScriptValue(_desiredProperties, properties, engine, skipDefaults, defaultEntityProperties); } @@ -2109,6 +2114,7 @@ void EntityItemProperties::copyFromScriptValue(const QScriptValue& object, bool COPY_PROPERTY_FROM_QSCRIPTVALUE(jointTranslations, qVectorVec3, setJointTranslations); COPY_PROPERTY_FROM_QSCRIPTVALUE(relayParentJoints, bool, setRelayParentJoints); COPY_PROPERTY_FROM_QSCRIPTVALUE(groupCulled, bool, setGroupCulled); + COPY_PROPERTY_FROM_QSCRIPTVALUE(blendshapeCoefficients, QString, setBlendshapeCoefficients); _animation.copyFromScriptValue(object, _defaultSettings); // Light @@ -2397,6 +2403,7 @@ void EntityItemProperties::merge(const EntityItemProperties& other) { COPY_PROPERTY_IF_CHANGED(jointTranslations); COPY_PROPERTY_IF_CHANGED(relayParentJoints); COPY_PROPERTY_IF_CHANGED(groupCulled); + COPY_PROPERTY_IF_CHANGED(blendshapeCoefficients); _animation.merge(other._animation); // Light @@ -2749,6 +2756,7 @@ bool EntityItemProperties::getPropertyInfo(const QString& propertyName, EntityPr ADD_PROPERTY_TO_MAP(PROP_JOINT_TRANSLATIONS, JointTranslations, jointTranslations, QVector); ADD_PROPERTY_TO_MAP(PROP_RELAY_PARENT_JOINTS, RelayParentJoints, relayParentJoints, bool); ADD_PROPERTY_TO_MAP(PROP_GROUP_CULLED, GroupCulled, groupCulled, bool); + ADD_PROPERTY_TO_MAP(PROP_BLENDSHAPE_COEFFICIENTS, BlendshapeCoefficients, blendshapeCoefficients, QString); { // Animation ADD_GROUP_PROPERTY_TO_MAP(PROP_ANIMATION_URL, Animation, animation, URL, url); ADD_GROUP_PROPERTY_TO_MAP(PROP_ANIMATION_ALLOW_TRANSLATION, Animation, animation, AllowTranslation, allowTranslation); @@ -3186,6 +3194,7 @@ OctreeElement::AppendState EntityItemProperties::encodeEntityEditPacket(PacketTy APPEND_ENTITY_PROPERTY(PROP_JOINT_TRANSLATIONS, properties.getJointTranslations()); APPEND_ENTITY_PROPERTY(PROP_RELAY_PARENT_JOINTS, properties.getRelayParentJoints()); APPEND_ENTITY_PROPERTY(PROP_GROUP_CULLED, properties.getGroupCulled()); + APPEND_ENTITY_PROPERTY(PROP_BLENDSHAPE_COEFFICIENTS, properties.getBlendshapeCoefficients()); _staticAnimation.setProperties(properties); _staticAnimation.appendToEditPacket(packetData, requestedProperties, propertyFlags, propertiesDidntFit, propertyCount, appendState); @@ -3671,6 +3680,7 @@ bool EntityItemProperties::decodeEntityEditPacket(const unsigned char* data, int READ_ENTITY_PROPERTY_TO_PROPERTIES(PROP_JOINT_TRANSLATIONS, QVector, setJointTranslations); READ_ENTITY_PROPERTY_TO_PROPERTIES(PROP_RELAY_PARENT_JOINTS, bool, setRelayParentJoints); READ_ENTITY_PROPERTY_TO_PROPERTIES(PROP_GROUP_CULLED, bool, setGroupCulled); + READ_ENTITY_PROPERTY_TO_PROPERTIES(PROP_BLENDSHAPE_COEFFICIENTS, QString, setBlendshapeCoefficients); properties.getAnimation().decodeFromEditPacket(propertyFlags, dataAt, processedBytes); } @@ -4076,6 +4086,7 @@ void EntityItemProperties::markAllChanged() { _jointTranslationsChanged = true; _relayParentJointsChanged = true; _groupCulledChanged = true; + _blendshapeCoefficientsChanged = true; _animation.markAllChanged(); // Light @@ -4640,6 +4651,9 @@ QList EntityItemProperties::listChangedProperties() { if (groupCulledChanged()) { out += "groupCulled"; } + if (blendshapeCoefficientsChanged()) { + out += "blendshapeCoefficients"; + } getAnimation().listChangedProperties(out); // Light diff --git a/libraries/entities/src/EntityItemProperties.h b/libraries/entities/src/EntityItemProperties.h index 63d8183899..e498f6f22a 100644 --- a/libraries/entities/src/EntityItemProperties.h +++ b/libraries/entities/src/EntityItemProperties.h @@ -296,6 +296,7 @@ public: DEFINE_PROPERTY_REF(PROP_JOINT_TRANSLATIONS, JointTranslations, jointTranslations, QVector, ENTITY_ITEM_DEFAULT_EMPTY_VEC3_QVEC); DEFINE_PROPERTY(PROP_RELAY_PARENT_JOINTS, RelayParentJoints, relayParentJoints, bool, ENTITY_ITEM_DEFAULT_RELAY_PARENT_JOINTS); DEFINE_PROPERTY_REF(PROP_GROUP_CULLED, GroupCulled, groupCulled, bool, false); + DEFINE_PROPERTY_REF(PROP_BLENDSHAPE_COEFFICIENTS, BlendshapeCoefficients, blendshapeCoefficients, QString, ""); DEFINE_PROPERTY_GROUP(Animation, animation, AnimationPropertyGroup); // Light diff --git a/libraries/entities/src/EntityPropertyFlags.h b/libraries/entities/src/EntityPropertyFlags.h index d5af337a7d..b355952656 100644 --- a/libraries/entities/src/EntityPropertyFlags.h +++ b/libraries/entities/src/EntityPropertyFlags.h @@ -214,16 +214,17 @@ enum EntityPropertyList { PROP_JOINT_TRANSLATIONS = PROP_DERIVED_5, PROP_RELAY_PARENT_JOINTS = PROP_DERIVED_6, PROP_GROUP_CULLED = PROP_DERIVED_7, + PROP_BLENDSHAPE_COEFFICIENTS = PROP_DERIVED_8, // Animation - PROP_ANIMATION_URL = PROP_DERIVED_8, - PROP_ANIMATION_ALLOW_TRANSLATION = PROP_DERIVED_9, - PROP_ANIMATION_FPS = PROP_DERIVED_10, - PROP_ANIMATION_FRAME_INDEX = PROP_DERIVED_11, - PROP_ANIMATION_PLAYING = PROP_DERIVED_12, - PROP_ANIMATION_LOOP = PROP_DERIVED_13, - PROP_ANIMATION_FIRST_FRAME = PROP_DERIVED_14, - PROP_ANIMATION_LAST_FRAME = PROP_DERIVED_15, - PROP_ANIMATION_HOLD = PROP_DERIVED_16, + PROP_ANIMATION_URL = PROP_DERIVED_9, + PROP_ANIMATION_ALLOW_TRANSLATION = PROP_DERIVED_10, + PROP_ANIMATION_FPS = PROP_DERIVED_11, + PROP_ANIMATION_FRAME_INDEX = PROP_DERIVED_12, + PROP_ANIMATION_PLAYING = PROP_DERIVED_13, + PROP_ANIMATION_LOOP = PROP_DERIVED_14, + PROP_ANIMATION_FIRST_FRAME = PROP_DERIVED_15, + PROP_ANIMATION_LAST_FRAME = PROP_DERIVED_16, + PROP_ANIMATION_HOLD = PROP_DERIVED_17, // Light PROP_IS_SPOTLIGHT = PROP_DERIVED_0, diff --git a/libraries/entities/src/ModelEntityItem.cpp b/libraries/entities/src/ModelEntityItem.cpp index 0b6e62e89e..dd9841b519 100644 --- a/libraries/entities/src/ModelEntityItem.cpp +++ b/libraries/entities/src/ModelEntityItem.cpp @@ -33,7 +33,8 @@ EntityItemPointer ModelEntityItem::factory(const EntityItemID& entityID, const E return entity; } -ModelEntityItem::ModelEntityItem(const EntityItemID& entityItemID) : EntityItem(entityItemID) +ModelEntityItem::ModelEntityItem(const EntityItemID& entityItemID) : EntityItem(entityItemID), + _blendshapeCoefficientsVector((int)Blendshapes::BlendshapeCount, 0.0f) { _lastAnimated = usecTimestampNow(); // set the last animated when interface (re)starts @@ -71,6 +72,7 @@ EntityItemProperties ModelEntityItem::getProperties(const EntityPropertyFlags& d COPY_ENTITY_PROPERTY_TO_PROPERTIES(jointTranslations, getJointTranslations); COPY_ENTITY_PROPERTY_TO_PROPERTIES(relayParentJoints, getRelayParentJoints); COPY_ENTITY_PROPERTY_TO_PROPERTIES(groupCulled, getGroupCulled); + COPY_ENTITY_PROPERTY_TO_PROPERTIES(blendshapeCoefficients, getBlendshapeCoefficients); withReadLock([&] { _animationProperties.getProperties(properties); }); @@ -94,6 +96,7 @@ bool ModelEntityItem::setProperties(const EntityItemProperties& properties) { SET_ENTITY_PROPERTY_FROM_PROPERTIES(jointTranslations, setJointTranslations); SET_ENTITY_PROPERTY_FROM_PROPERTIES(relayParentJoints, setRelayParentJoints); SET_ENTITY_PROPERTY_FROM_PROPERTIES(groupCulled, setGroupCulled); + SET_ENTITY_PROPERTY_FROM_PROPERTIES(blendshapeCoefficients, setBlendshapeCoefficients); withWriteLock([&] { AnimationPropertyGroup animationProperties = _animationProperties; @@ -138,6 +141,7 @@ int ModelEntityItem::readEntitySubclassDataFromBuffer(const unsigned char* data, READ_ENTITY_PROPERTY(PROP_JOINT_TRANSLATIONS, QVector, setJointTranslations); READ_ENTITY_PROPERTY(PROP_RELAY_PARENT_JOINTS, bool, setRelayParentJoints); READ_ENTITY_PROPERTY(PROP_GROUP_CULLED, bool, setGroupCulled); + READ_ENTITY_PROPERTY(PROP_BLENDSHAPE_COEFFICIENTS, QString, setBlendshapeCoefficients); // grab a local copy of _animationProperties to avoid multiple locks int bytesFromAnimation; @@ -176,6 +180,7 @@ EntityPropertyFlags ModelEntityItem::getEntityProperties(EncodeBitstreamParams& requestedProperties += PROP_JOINT_TRANSLATIONS; requestedProperties += PROP_RELAY_PARENT_JOINTS; requestedProperties += PROP_GROUP_CULLED; + requestedProperties += PROP_BLENDSHAPE_COEFFICIENTS; requestedProperties += _animationProperties.getEntityProperties(params); return requestedProperties; @@ -204,6 +209,7 @@ void ModelEntityItem::appendSubclassData(OctreePacketData* packetData, EncodeBit APPEND_ENTITY_PROPERTY(PROP_JOINT_TRANSLATIONS, getJointTranslations()); APPEND_ENTITY_PROPERTY(PROP_RELAY_PARENT_JOINTS, getRelayParentJoints()); APPEND_ENTITY_PROPERTY(PROP_GROUP_CULLED, getGroupCulled()); + APPEND_ENTITY_PROPERTY(PROP_BLENDSHAPE_COEFFICIENTS, getBlendshapeCoefficients()); withReadLock([&] { _animationProperties.appendSubclassData(packetData, params, entityTreeElementExtraEncodeData, requestedProperties, @@ -256,6 +262,7 @@ void ModelEntityItem::debugDump() const { qCDebug(entities) << " dimensions:" << getScaledDimensions(); qCDebug(entities) << " model URL:" << getModelURL(); qCDebug(entities) << " compound shape URL:" << getCompoundShapeURL(); + qCDebug(entities) << " blendshapeCoefficients:" << getBlendshapeCoefficients(); } void ModelEntityItem::setShapeType(ShapeType type) { @@ -743,3 +750,39 @@ void ModelEntityItem::setModelScale(const glm::vec3& modelScale) { _modelScale = modelScale; }); } + +QString ModelEntityItem::getBlendshapeCoefficients() const { + return resultWithReadLock([&] { + return QJsonDocument::fromVariant(_blendshapeCoefficientsMap).toJson(); + }); +} + +void ModelEntityItem::setBlendshapeCoefficients(const QString& blendshapeCoefficients) { + QJsonParseError error; + QJsonDocument newCoefficientsJSON = QJsonDocument::fromJson(blendshapeCoefficients.toUtf8(), &error); + if (error.error != QJsonParseError::NoError) { + qWarning() << "Could not evaluate blendshapeCoefficients property value:" << newCoefficientsJSON; + return; + } + + QVariantMap newCoefficientsMap = newCoefficientsJSON.toVariant().toMap(); + withWriteLock([&] { + for (auto& blendshape : newCoefficientsMap.keys()) { + auto newCoefficient = newCoefficientsMap[blendshape]; + auto blendshapeIter = blendshapeLookupMap.find(blendshape); + if (newCoefficient.canConvert() && blendshapeIter != blendshapeLookupMap.end()) { + float newCoefficientValue = newCoefficient.toFloat(); + _blendshapeCoefficientsVector[blendshapeIter.value()] = newCoefficientValue; + _blendshapeCoefficientsMap[blendshape] = newCoefficientValue; + _blendshapesChanged = true; + } + } + }); +} + +QVector ModelEntityItem::getBlendshapeCoefficientVector() { + return resultWithReadLock>([&] { + _blendshapesChanged = false; // ok to change this within read lock here + return _blendshapeCoefficientsVector; + }); +} \ No newline at end of file diff --git a/libraries/entities/src/ModelEntityItem.h b/libraries/entities/src/ModelEntityItem.h index 75a695f1c0..c331a94adf 100644 --- a/libraries/entities/src/ModelEntityItem.h +++ b/libraries/entities/src/ModelEntityItem.h @@ -17,6 +17,7 @@ #include #include "AnimationPropertyGroup.h" +#include "BlendshapeConstants.h" class ModelEntityItem : public EntityItem { public: @@ -133,6 +134,11 @@ public: glm::vec3 getModelScale() const; void setModelScale(const glm::vec3& modelScale); + QString getBlendshapeCoefficients() const; + void setBlendshapeCoefficients(const QString& blendshapeCoefficients); + bool blendshapesChanged() const { return _blendshapesChanged; } + QVector getBlendshapeCoefficientVector(); + private: void setAnimationSettings(const QString& value); // only called for old bitstream format bool applyNewAnimationProperties(AnimationPropertyGroup newProperties); @@ -166,6 +172,7 @@ protected: QString _modelURL; bool _relayParentJoints; bool _groupCulled { false }; + QVariantMap _blendshapeCoefficientsMap; ThreadSafeValueCache _compoundShapeURL; @@ -178,6 +185,9 @@ protected: private: uint64_t _lastAnimated{ 0 }; float _currentFrame{ -1.0f }; + + QVector _blendshapeCoefficientsVector; + bool _blendshapesChanged { false }; }; #endif // hifi_ModelEntityItem_h diff --git a/libraries/networking/src/udt/PacketHeaders.h b/libraries/networking/src/udt/PacketHeaders.h index fbf575065e..a139f0236c 100644 --- a/libraries/networking/src/udt/PacketHeaders.h +++ b/libraries/networking/src/udt/PacketHeaders.h @@ -275,6 +275,7 @@ enum class EntityVersion : PacketVersion { ShadowBiasAndDistance, TextEntityFonts, ScriptServerKinematicMotion, + ModelBlendshapes, // Add new versions above here NUM_PACKET_TYPE, diff --git a/libraries/render-utils/src/CauterizedModel.cpp b/libraries/render-utils/src/CauterizedModel.cpp index 7f42b05fa4..94b7661b2f 100644 --- a/libraries/render-utils/src/CauterizedModel.cpp +++ b/libraries/render-utils/src/CauterizedModel.cpp @@ -175,12 +175,7 @@ void CauterizedModel::updateClusterMatrices() { } } - // post the blender if we're not currently waiting for one to finish - auto modelBlender = DependencyManager::get(); - if (modelBlender->shouldComputeBlendshapes() && hfmModel.hasBlendedMeshes() && _blendshapeCoefficients != _blendedBlendshapeCoefficients) { - _blendedBlendshapeCoefficients = _blendshapeCoefficients; - modelBlender->noteRequiresBlend(getThisPointer()); - } + updateBlendshapes(); } void CauterizedModel::updateRenderItems() { diff --git a/libraries/render-utils/src/MeshPartPayload.cpp b/libraries/render-utils/src/MeshPartPayload.cpp index e82af5395f..318d2f298f 100644 --- a/libraries/render-utils/src/MeshPartPayload.cpp +++ b/libraries/render-utils/src/MeshPartPayload.cpp @@ -450,6 +450,7 @@ void ModelMeshPartPayload::setShapeKey(bool invalidateShapeKey, PrimitiveMode pr } } + _prevUseDualQuaternionSkinning = useDualQuaternionSkinning; _shapeKey = builder.build(); } @@ -559,6 +560,14 @@ void ModelMeshPartPayload::setBlendshapeBuffer(const std::unordered_mapsecond; + if (_isSkinned || (_isBlendShaped && _meshBlendshapeBuffer)) { + ShapeKey::Builder builder(_shapeKey); + builder.withDeformed(); + if (_prevUseDualQuaternionSkinning) { + builder.withDualQuatSkinned(); + } + _shapeKey = builder.build(); + } } } } diff --git a/libraries/render-utils/src/MeshPartPayload.h b/libraries/render-utils/src/MeshPartPayload.h index ee205bd778..dc0fe9614d 100644 --- a/libraries/render-utils/src/MeshPartPayload.h +++ b/libraries/render-utils/src/MeshPartPayload.h @@ -145,6 +145,7 @@ private: gpu::BufferPointer _meshBlendshapeBuffer; int _meshNumVertices; render::ShapeKey _shapeKey { render::ShapeKey::Builder::invalid() }; + bool _prevUseDualQuaternionSkinning { false }; bool _cauterized { false }; }; diff --git a/libraries/render-utils/src/Model.cpp b/libraries/render-utils/src/Model.cpp index d8172112ff..c83e0e726f 100644 --- a/libraries/render-utils/src/Model.cpp +++ b/libraries/render-utils/src/Model.cpp @@ -1427,9 +1427,13 @@ void Model::updateClusterMatrices() { } } + updateBlendshapes(); +} + +void Model::updateBlendshapes() { // post the blender if we're not currently waiting for one to finish auto modelBlender = DependencyManager::get(); - if (modelBlender->shouldComputeBlendshapes() && hfmModel.hasBlendedMeshes() && _blendshapeCoefficients != _blendedBlendshapeCoefficients) { + if (modelBlender->shouldComputeBlendshapes() && getHFMModel().hasBlendedMeshes() && _blendshapeCoefficients != _blendedBlendshapeCoefficients) { _blendedBlendshapeCoefficients = _blendshapeCoefficients; modelBlender->noteRequiresBlend(getThisPointer()); } diff --git a/libraries/render-utils/src/Model.h b/libraries/render-utils/src/Model.h index b677861e9f..ac91a310df 100644 --- a/libraries/render-utils/src/Model.h +++ b/libraries/render-utils/src/Model.h @@ -76,17 +76,6 @@ struct SortedTriangleSet { int subMeshIndex; }; -struct BlendshapeOffsetPacked { - glm::uvec4 packedPosNorTan; -}; - -struct BlendshapeOffsetUnpacked { - glm::vec3 positionOffset; - glm::vec3 normalOffset; - glm::vec3 tangentOffset; -}; - -using BlendshapeOffset = BlendshapeOffsetPacked; using BlendShapeOperator = std::function&, const QVector&, const render::ItemIDs&)>; /// A generic 3D model displaying geometry loaded from a URL. @@ -178,6 +167,7 @@ public: virtual void simulate(float deltaTime, bool fullUpdate = true); virtual void updateClusterMatrices(); + virtual void updateBlendshapes(); /// Returns a reference to the shared geometry. const Geometry::Pointer& getGeometry() const { return _renderGeometry; } @@ -365,6 +355,8 @@ public: void addMaterial(graphics::MaterialLayer material, const std::string& parentMaterialName); void removeMaterial(graphics::MaterialPointer material, const std::string& parentMaterialName); + void setBlendshapeCoefficients(const QVector& coefficients) { _blendshapeCoefficients = coefficients; } + public slots: void loadURLFinished(bool success); @@ -382,7 +374,6 @@ protected: std::mutex _materialMappingMutex; void applyMaterialMapping(); - void setBlendshapeCoefficients(const QVector& coefficients) { _blendshapeCoefficients = coefficients; } const QVector& getBlendshapeCoefficients() const { return _blendshapeCoefficients; } /// Clear the joint states diff --git a/libraries/render-utils/src/SoftAttachmentModel.cpp b/libraries/render-utils/src/SoftAttachmentModel.cpp index 186f9e682a..24d6081743 100644 --- a/libraries/render-utils/src/SoftAttachmentModel.cpp +++ b/libraries/render-utils/src/SoftAttachmentModel.cpp @@ -69,10 +69,5 @@ void SoftAttachmentModel::updateClusterMatrices() { } } - // post the blender if we're not currently waiting for one to finish - auto modelBlender = DependencyManager::get(); - if (modelBlender->shouldComputeBlendshapes() && hfmModel.hasBlendedMeshes() && _blendshapeCoefficients != _blendedBlendshapeCoefficients) { - _blendedBlendshapeCoefficients = _blendshapeCoefficients; - modelBlender->noteRequiresBlend(getThisPointer()); - } + updateBlendshapes(); } diff --git a/libraries/render/src/render/Item.h b/libraries/render/src/render/Item.h index 3383101b5b..f59ef6cc1b 100644 --- a/libraries/render/src/render/Item.h +++ b/libraries/render/src/render/Item.h @@ -28,6 +28,8 @@ #include #include "ShapePipeline.h" +#include "BlendshapeConstants.h" + namespace render { typedef int32_t Index; @@ -615,6 +617,10 @@ public: virtual Item::Bound getBound() = 0; virtual void render(RenderArgs* args) = 0; virtual uint32_t metaFetchMetaSubItems(ItemIDs& subItems) const = 0; + + // FIXME: this isn't the best place for this since it's only used for ModelEntities, but currently all Entities use PayloadProxyInterface + virtual void handleBlendedVertices(int blendshapeNumber, const QVector& blendshapeOffsets, + const QVector& blendedMeshSizes, const render::ItemIDs& subItemIDs) {}; }; template <> const ItemKey payloadGetKey(const PayloadProxyInterface::Pointer& payload); diff --git a/libraries/shared/src/BlendshapeConstants.cpp b/libraries/shared/src/BlendshapeConstants.cpp index 172df461fd..8486477c78 100644 --- a/libraries/shared/src/BlendshapeConstants.cpp +++ b/libraries/shared/src/BlendshapeConstants.cpp @@ -76,3 +76,11 @@ const char* FACESHIFT_BLENDSHAPES[] = { "UserBlendshape9", "" }; + +QMap blendshapeLookupMap = [] { + QMap toReturn; + for (int i = 0; i < (int)Blendshapes::BlendshapeCount; i++) { + toReturn[FACESHIFT_BLENDSHAPES[i]] = i; + } + return toReturn; +}(); \ No newline at end of file diff --git a/libraries/shared/src/BlendshapeConstants.h b/libraries/shared/src/BlendshapeConstants.h index e74146eb56..358efb6597 100644 --- a/libraries/shared/src/BlendshapeConstants.h +++ b/libraries/shared/src/BlendshapeConstants.h @@ -12,8 +12,14 @@ #ifndef hifi_BlendshapeConstants_h #define hifi_BlendshapeConstants_h +#include +#include + +#include + /// The names of the blendshapes expected by Faceshift, terminated with an empty string. extern const char* FACESHIFT_BLENDSHAPES[]; +extern QMap blendshapeLookupMap; enum class Blendshapes : int { EyeBlink_L = 0, @@ -115,5 +121,16 @@ enum class LegacyBlendshpaes : int { // * LipsUpperOpen (not in ARKit) // * LipsLowerOpen (not in ARKit) +struct BlendshapeOffsetPacked { + glm::uvec4 packedPosNorTan; +}; + +struct BlendshapeOffsetUnpacked { + glm::vec3 positionOffset; + glm::vec3 normalOffset; + glm::vec3 tangentOffset; +}; + +using BlendshapeOffset = BlendshapeOffsetPacked; #endif // hifi_BlendshapeConstants_h diff --git a/plugins/KasenAPIExample/src/KasenAPIExample.cpp b/plugins/KasenAPIExample/src/KasenAPIExample.cpp index d566d11376..b0a9c29519 100644 --- a/plugins/KasenAPIExample/src/KasenAPIExample.cpp +++ b/plugins/KasenAPIExample/src/KasenAPIExample.cpp @@ -113,7 +113,7 @@ private: } struct _HeadHelper : public HeadData { QMap getBlendshapeMap() const { - return _blendshapeLookupMap; + return blendshapeLookupMap; } struct States { QVector base, summed, transient; }; States getBlendshapeStates() const { From b40a468b4ceeaedd9165abf5ac1666737be02405 Mon Sep 17 00:00:00 2001 From: HifiExperiments Date: Mon, 6 Jan 2020 18:31:35 -0800 Subject: [PATCH 002/160] fix EOF --- libraries/entities-renderer/src/RenderableModelEntityItem.cpp | 2 +- libraries/entities/src/ModelEntityItem.cpp | 2 +- libraries/shared/src/BlendshapeConstants.cpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp index 40182a6965..d9a06261a7 100644 --- a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp @@ -1602,4 +1602,4 @@ void ModelEntityRenderer::metaBlendshapeOperator(render::ItemID renderItemID, in self.handleBlendedVertices(blendshapeNumber, blendshapeOffsets, blendedMeshSizes, subItemIDs); }); AbstractViewStateInterface::instance()->getMain3DScene()->enqueueTransaction(transaction); -} \ No newline at end of file +} diff --git a/libraries/entities/src/ModelEntityItem.cpp b/libraries/entities/src/ModelEntityItem.cpp index dd9841b519..9f54033373 100644 --- a/libraries/entities/src/ModelEntityItem.cpp +++ b/libraries/entities/src/ModelEntityItem.cpp @@ -785,4 +785,4 @@ QVector ModelEntityItem::getBlendshapeCoefficientVector() { _blendshapesChanged = false; // ok to change this within read lock here return _blendshapeCoefficientsVector; }); -} \ No newline at end of file +} diff --git a/libraries/shared/src/BlendshapeConstants.cpp b/libraries/shared/src/BlendshapeConstants.cpp index 8486477c78..0150e3854f 100644 --- a/libraries/shared/src/BlendshapeConstants.cpp +++ b/libraries/shared/src/BlendshapeConstants.cpp @@ -83,4 +83,4 @@ QMap blendshapeLookupMap = [] { toReturn[FACESHIFT_BLENDSHAPES[i]] = i; } return toReturn; -}(); \ No newline at end of file +}(); From bc319cb3401c0ee742a1bb9333d0a6df0881d3cc Mon Sep 17 00:00:00 2001 From: HifiExperiments Date: Sat, 11 Jan 2020 22:29:07 -0800 Subject: [PATCH 003/160] zone occlusion --- interface/src/graphics/WorldBox.h | 4 - .../src/RenderableEntityItem.cpp | 27 +++++- .../src/RenderableEntityItem.h | 4 + .../src/RenderableModelEntityItem.cpp | 10 +++ .../src/RenderableModelEntityItem.h | 1 + .../src/RenderableTextEntityItem.cpp | 19 +++++ .../src/RenderableTextEntityItem.h | 2 + .../src/RenderableZoneEntityItem.cpp | 7 ++ libraries/entities/src/EntityItem.cpp | 20 +++++ libraries/entities/src/EntityItem.h | 8 ++ .../entities/src/EntityItemProperties.cpp | 15 ++++ libraries/entities/src/EntityItemProperties.h | 1 + .../entities/src/EntityItemPropertiesMacros.h | 7 ++ libraries/entities/src/EntityPropertyFlags.h | 1 + libraries/networking/src/udt/PacketHeaders.h | 1 + libraries/octree/src/OctreePacketData.cpp | 22 +++++ libraries/octree/src/OctreePacketData.h | 4 + .../render-utils/src/MeshPartPayload.cpp | 28 ++++++- libraries/render-utils/src/MeshPartPayload.h | 6 ++ libraries/render-utils/src/Model.cpp | 10 +++ libraries/render-utils/src/Model.h | 2 + libraries/render/src/render/Args.h | 10 +-- libraries/render/src/render/CullTask.cpp | 84 +++++++------------ libraries/render/src/render/CullTask.h | 16 ++-- libraries/render/src/render/Item.cpp | 6 ++ libraries/render/src/render/Item.h | 13 ++- .../src/render/RenderFetchCullSortTask.cpp | 1 + libraries/shared/src/RegisteredMetaTypes.cpp | 18 ++++ libraries/shared/src/RegisteredMetaTypes.h | 2 + 29 files changed, 272 insertions(+), 77 deletions(-) diff --git a/interface/src/graphics/WorldBox.h b/interface/src/graphics/WorldBox.h index 114777ba0f..4d53652c0e 100644 --- a/interface/src/graphics/WorldBox.h +++ b/interface/src/graphics/WorldBox.h @@ -19,8 +19,6 @@ #include #include "Menu.h" - - class WorldBoxRenderData { public: typedef render::Payload Payload; @@ -29,8 +27,6 @@ public: int _val = 0; static render::ItemID _item; // unique WorldBoxRenderData - - static void renderWorldBox(RenderArgs* args, gpu::Batch& batch); }; diff --git a/libraries/entities-renderer/src/RenderableEntityItem.cpp b/libraries/entities-renderer/src/RenderableEntityItem.cpp index ae56a8fc47..dcf90cd966 100644 --- a/libraries/entities-renderer/src/RenderableEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableEntityItem.cpp @@ -128,7 +128,7 @@ std::shared_ptr make_renderer(const EntityItemPointer& entity) { return std::shared_ptr(new T(entity), [](T* ptr) { ptr->deleteLater(); }); } -EntityRenderer::EntityRenderer(const EntityItemPointer& entity) : _created(entity->getCreated()), _entity(entity) {} +EntityRenderer::EntityRenderer(const EntityItemPointer& entity) : _created(entity->getCreated()), _entity(entity), _entityID(entity->getID()) {} EntityRenderer::~EntityRenderer() {} @@ -196,6 +196,23 @@ uint32_t EntityRenderer::metaFetchMetaSubItems(ItemIDs& subItems) const { return 0; } +bool EntityRenderer::passesZoneOcclusionTest(const std::unordered_set& containingZones) const { + auto renderWithZones = resultWithReadLock>([&] { + return _renderWithZones; + }); + if (!renderWithZones.isEmpty()) { + if (!containingZones.empty()) { + for (auto renderWithZone : renderWithZones) { + if (containingZones.find(renderWithZone) != containingZones.end()) { + return true; + } + } + } + return false; + } + return true; +} + void EntityRenderer::render(RenderArgs* args) { if (!isValidRenderItem()) { return; @@ -385,6 +402,10 @@ bool EntityRenderer::needsRenderUpdateFromEntity(const EntityItemPointer& entity return true; } + if (entity->needsZoneOcclusionUpdate()) { + return true; + } + return false; } @@ -426,6 +447,10 @@ void EntityRenderer::doRenderUpdateSynchronous(const ScenePointer& scene, Transa _canCastShadow = entity->getCanCastShadow(); setCullWithParent(entity->getCullWithParent()); _cauterized = entity->getCauterized(); + if (entity->needsZoneOcclusionUpdate()) { + entity->resetNeedsZoneOcclusionUpdate(); + setRenderWithZones(entity->getRenderWithZones()); + } entity->setNeedsRenderUpdate(false); }); } diff --git a/libraries/entities-renderer/src/RenderableEntityItem.h b/libraries/entities-renderer/src/RenderableEntityItem.h index 227eb6a018..9c787d82c2 100644 --- a/libraries/entities-renderer/src/RenderableEntityItem.h +++ b/libraries/entities-renderer/src/RenderableEntityItem.h @@ -65,6 +65,7 @@ public: virtual uint32_t metaFetchMetaSubItems(ItemIDs& subItems) const override; virtual Item::Bound getBound() override; + bool passesZoneOcclusionTest(const std::unordered_set& containingZones) const override; protected: virtual bool needsRenderUpdateFromEntity() const final { return needsRenderUpdateFromEntity(_entity); } @@ -109,6 +110,7 @@ protected: virtual void setRenderLayer(RenderLayer value) { _renderLayer = value; } virtual void setPrimitiveMode(PrimitiveMode value) { _primitiveMode = value; } virtual void setCullWithParent(bool value) { _cullWithParent = value; } + virtual void setRenderWithZones(const QVector& renderWithZones) { _renderWithZones = renderWithZones; } template T withReadLockResult(const std::function& f) { @@ -143,6 +145,7 @@ protected: bool _cullWithParent { false }; RenderLayer _renderLayer { RenderLayer::WORLD }; PrimitiveMode _primitiveMode { PrimitiveMode::SOLID }; + QVector _renderWithZones; bool _cauterized { false }; bool _moving { false }; // Only touched on the rendering thread @@ -153,6 +156,7 @@ protected: std::mutex _materialsLock; quint64 _created; + QUuid _entityID; // The base class relies on comparing the model transform to the entity transform in order // to trigger an update, so the member must not be visible to derived classes as a modifiable diff --git a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp index 5fbbdfa0b8..107890cd21 100644 --- a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp @@ -1324,6 +1324,9 @@ void ModelEntityRenderer::doRenderUpdateSynchronousTyped(const ScenePointer& sce setKey(didVisualGeometryRequestSucceed); _model->setTagMask(getTagMask()); _model->setHifiRenderLayer(getHifiRenderLayer()); + _model->setPrimitiveMode(_primitiveMode); + _model->setCullWithParent(_cullWithParent); + _model->setRenderWithZones(_renderWithZones); emit requestRenderUpdate(); if(didVisualGeometryRequestSucceed) { emit DependencyManager::get()-> @@ -1507,6 +1510,13 @@ void ModelEntityRenderer::setCullWithParent(bool value) { } } +void ModelEntityRenderer::setRenderWithZones(const QVector& renderWithZones) { + Parent::setRenderWithZones(renderWithZones); + if (_model) { + _model->setRenderWithZones(renderWithZones); + } +} + // NOTE: this only renders the "meta" portion of the Model, namely it renders debugging items void ModelEntityRenderer::doRender(RenderArgs* args) { DETAILED_PROFILE_RANGE(render_detail, "MetaModelRender"); diff --git a/libraries/entities-renderer/src/RenderableModelEntityItem.h b/libraries/entities-renderer/src/RenderableModelEntityItem.h index 0119c7bc26..84384532d0 100644 --- a/libraries/entities-renderer/src/RenderableModelEntityItem.h +++ b/libraries/entities-renderer/src/RenderableModelEntityItem.h @@ -165,6 +165,7 @@ protected: void setRenderLayer(RenderLayer value) override; void setPrimitiveMode(PrimitiveMode value) override; void setCullWithParent(bool value) override; + void setRenderWithZones(const QVector& renderWithZones) override; private: void animate(const TypedEntityPointer& entity); diff --git a/libraries/entities-renderer/src/RenderableTextEntityItem.cpp b/libraries/entities-renderer/src/RenderableTextEntityItem.cpp index fbd10e2f5b..2ba1acea11 100644 --- a/libraries/entities-renderer/src/RenderableTextEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableTextEntityItem.cpp @@ -289,6 +289,17 @@ ShapeKey entities::TextPayload::getShapeKey() const { return ShapeKey::Builder::invalid(); } +bool entities::TextPayload::passesZoneOcclusionTest(const std::unordered_set& containingZones) const { + auto entityTreeRenderer = DependencyManager::get(); + if (entityTreeRenderer) { + auto renderable = entityTreeRenderer->renderableForEntityId(_entityID); + if (renderable) { + return std::static_pointer_cast(renderable)->passesZoneOcclusionTest(containingZones); + } + } + return false; +} + void entities::TextPayload::render(RenderArgs* args) { PerformanceTimer perfTimer("TextPayload::render"); Q_ASSERT(args->_batch); @@ -388,4 +399,12 @@ template <> const ShapeKey shapeGetShapeKey(const TextPayload::Pointer& payload) template <> void payloadRender(const TextPayload::Pointer& payload, RenderArgs* args) { return payload->render(args); } + +template <> bool payloadPassesZoneOcclusionTest(const entities::TextPayload::Pointer& payload, const std::unordered_set& containingZones) { + if (payload) { + return payload->passesZoneOcclusionTest(containingZones); + } + return false; +} + } diff --git a/libraries/entities-renderer/src/RenderableTextEntityItem.h b/libraries/entities-renderer/src/RenderableTextEntityItem.h index 63cf3e6e9e..87102daa32 100644 --- a/libraries/entities-renderer/src/RenderableTextEntityItem.h +++ b/libraries/entities-renderer/src/RenderableTextEntityItem.h @@ -94,6 +94,7 @@ public: Item::Bound getBound() const; ShapeKey getShapeKey() const; void render(RenderArgs* args); + bool passesZoneOcclusionTest(const std::unordered_set& containingZones) const; protected: QUuid _entityID; @@ -109,6 +110,7 @@ namespace render { template <> const Item::Bound payloadGetBound(const entities::TextPayload::Pointer& payload); template <> const ShapeKey shapeGetShapeKey(const entities::TextPayload::Pointer& payload); template <> void payloadRender(const entities::TextPayload::Pointer& payload, RenderArgs* args); + template <> bool payloadPassesZoneOcclusionTest(const entities::TextPayload::Pointer& payload, const std::unordered_set& containingZones); } #endif // hifi_RenderableTextEntityItem_h diff --git a/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp b/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp index bbb8c67ad1..948c6ca762 100644 --- a/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp @@ -71,6 +71,11 @@ void ZoneEntityRenderer::onRemoveFromSceneTyped(const TypedEntityPointer& entity } void ZoneEntityRenderer::doRender(RenderArgs* args) { + // This is necessary so that zones can themselves be zone culled + if (!passesZoneOcclusionTest(CullTest::_prevContainingZones)) { + return; + } + if (!_stage) { _stage = args->_scene->getStage(); assert(_stage); @@ -180,6 +185,8 @@ void ZoneEntityRenderer::doRender(RenderArgs* args) { _bloomStage->_currentFrame.pushBloom(_bloomIndex); } } + + CullTest::_containingZones.insert(_entityID); } void ZoneEntityRenderer::doRenderUpdateSynchronousTyped(const ScenePointer& scene, Transaction& transaction, const TypedEntityPointer& entity) { diff --git a/libraries/entities/src/EntityItem.cpp b/libraries/entities/src/EntityItem.cpp index cc215d3528..0fffe2de35 100644 --- a/libraries/entities/src/EntityItem.cpp +++ b/libraries/entities/src/EntityItem.cpp @@ -105,6 +105,7 @@ EntityPropertyFlags EntityItem::getEntityProperties(EncodeBitstreamParams& param requestedProperties += PROP_RENDER_LAYER; requestedProperties += PROP_PRIMITIVE_MODE; requestedProperties += PROP_IGNORE_PICK_INTERSECTION; + requestedProperties += PROP_RENDER_WITH_ZONES; requestedProperties += _grabProperties.getEntityProperties(params); // Physics @@ -300,6 +301,7 @@ OctreeElement::AppendState EntityItem::appendEntityData(OctreePacketData* packet APPEND_ENTITY_PROPERTY(PROP_RENDER_LAYER, (uint32_t)getRenderLayer()); APPEND_ENTITY_PROPERTY(PROP_PRIMITIVE_MODE, (uint32_t)getPrimitiveMode()); APPEND_ENTITY_PROPERTY(PROP_IGNORE_PICK_INTERSECTION, getIgnorePickIntersection()); + APPEND_ENTITY_PROPERTY(PROP_RENDER_WITH_ZONES, getRenderWithZones()); withReadLock([&] { _grabProperties.appendSubclassData(packetData, params, entityTreeElementExtraEncodeData, requestedProperties, propertyFlags, propertiesDidntFit, propertyCount, appendState); @@ -875,6 +877,7 @@ int EntityItem::readEntityDataFromBuffer(const unsigned char* data, int bytesLef READ_ENTITY_PROPERTY(PROP_RENDER_LAYER, RenderLayer, setRenderLayer); READ_ENTITY_PROPERTY(PROP_PRIMITIVE_MODE, PrimitiveMode, setPrimitiveMode); READ_ENTITY_PROPERTY(PROP_IGNORE_PICK_INTERSECTION, bool, setIgnorePickIntersection); + READ_ENTITY_PROPERTY(PROP_RENDER_WITH_ZONES, QVector, setRenderWithZones); withWriteLock([&] { int bytesFromGrab = _grabProperties.readEntitySubclassDataFromBuffer(dataAt, (bytesLeftToRead - bytesRead), args, propertyFlags, overwriteLocalData, @@ -1354,6 +1357,7 @@ EntityItemProperties EntityItem::getProperties(const EntityPropertyFlags& desire COPY_ENTITY_PROPERTY_TO_PROPERTIES(renderLayer, getRenderLayer); COPY_ENTITY_PROPERTY_TO_PROPERTIES(primitiveMode, getPrimitiveMode); COPY_ENTITY_PROPERTY_TO_PROPERTIES(ignorePickIntersection, getIgnorePickIntersection); + COPY_ENTITY_PROPERTY_TO_PROPERTIES(renderWithZones, getRenderWithZones); withReadLock([&] { _grabProperties.getProperties(properties); }); @@ -1503,6 +1507,7 @@ bool EntityItem::setProperties(const EntityItemProperties& properties) { SET_ENTITY_PROPERTY_FROM_PROPERTIES(renderLayer, setRenderLayer); SET_ENTITY_PROPERTY_FROM_PROPERTIES(primitiveMode, setPrimitiveMode); SET_ENTITY_PROPERTY_FROM_PROPERTIES(ignorePickIntersection, setIgnorePickIntersection); + SET_ENTITY_PROPERTY_FROM_PROPERTIES(renderWithZones, setRenderWithZones); withWriteLock([&] { bool grabPropertiesChanged = _grabProperties.setProperties(properties); somethingChanged |= grabPropertiesChanged; @@ -3520,3 +3525,18 @@ void EntityItem::disableGrab(GrabPointer grab) { } } } + +void EntityItem::setRenderWithZones(const QVector& renderWithZones) { + withWriteLock([&] { + if (_renderWithZones != renderWithZones) { + _needsZoneOcclusionUpdate = true; + _renderWithZones = renderWithZones; + } + }); +} + +QVector EntityItem::getRenderWithZones() const { + return resultWithReadLock>([&] { + return _renderWithZones; + }); +} \ No newline at end of file diff --git a/libraries/entities/src/EntityItem.h b/libraries/entities/src/EntityItem.h index 14b8b259cc..2d2d158ebd 100644 --- a/libraries/entities/src/EntityItem.h +++ b/libraries/entities/src/EntityItem.h @@ -577,6 +577,11 @@ public: bool needsRenderUpdate() const { return resultWithReadLock([&] { return _needsRenderUpdate; }); } void setNeedsRenderUpdate(bool needsRenderUpdate) { withWriteLock([&] { _needsRenderUpdate = needsRenderUpdate; }); } + void setRenderWithZones(const QVector& renderWithZones); + QVector getRenderWithZones() const; + bool needsZoneOcclusionUpdate() const { return _needsZoneOcclusionUpdate; } + void resetNeedsZoneOcclusionUpdate() { withWriteLock([&] { _needsZoneOcclusionUpdate = false; }); } + signals: void spaceUpdate(std::pair data); @@ -765,6 +770,9 @@ protected: QHash _grabActions; + QVector _renderWithZones; + mutable bool _needsZoneOcclusionUpdate { false }; + bool _cullWithParent { false }; mutable bool _needsRenderUpdate { false }; diff --git a/libraries/entities/src/EntityItemProperties.cpp b/libraries/entities/src/EntityItemProperties.cpp index 2b8f2b4c14..54f84beee1 100644 --- a/libraries/entities/src/EntityItemProperties.cpp +++ b/libraries/entities/src/EntityItemProperties.cpp @@ -421,6 +421,7 @@ EntityPropertyFlags EntityItemProperties::getChangedProperties() const { CHECK_PROPERTY_CHANGE(PROP_RENDER_LAYER, renderLayer); CHECK_PROPERTY_CHANGE(PROP_PRIMITIVE_MODE, primitiveMode); CHECK_PROPERTY_CHANGE(PROP_IGNORE_PICK_INTERSECTION, ignorePickIntersection); + CHECK_PROPERTY_CHANGE(PROP_RENDER_WITH_ZONES, renderWithZones); changedProperties += _grab.getChangedProperties(); // Physics @@ -793,6 +794,10 @@ EntityPropertyFlags EntityItemProperties::getChangedProperties() const { * avatar entities, false if they won't be. * @property {Uuid} cloneOriginID - The ID of the entity that this entity was cloned from. * + * @property {Uuid[]} renderWithZones=[]] - A list of entity IDs representing with which zones this entity should render. + * If it is empty, this entity will render normally. Otherwise, this entity will only render if your avatar is within + * one of the zones in this list. + * * @property {Entities.Grab} grab - The entity's grab-related properties. * * @property {string} itemName="" - Certifiable name of the Marketplace item. @@ -1583,6 +1588,7 @@ QScriptValue EntityItemProperties::copyToScriptValue(QScriptEngine* engine, bool COPY_PROPERTY_TO_QSCRIPTVALUE_GETTER(PROP_RENDER_LAYER, renderLayer, getRenderLayerAsString()); COPY_PROPERTY_TO_QSCRIPTVALUE_GETTER(PROP_PRIMITIVE_MODE, primitiveMode, getPrimitiveModeAsString()); COPY_PROPERTY_TO_QSCRIPTVALUE(PROP_IGNORE_PICK_INTERSECTION, ignorePickIntersection); + COPY_PROPERTY_TO_QSCRIPTVALUE(PROP_RENDER_WITH_ZONES, renderWithZones); _grab.copyToScriptValue(_desiredProperties, properties, engine, skipDefaults, defaultEntityProperties); // Physics @@ -2000,6 +2006,7 @@ void EntityItemProperties::copyFromScriptValue(const QScriptValue& object, bool COPY_PROPERTY_FROM_QSCRIPTVALUE_ENUM(renderLayer, RenderLayer); COPY_PROPERTY_FROM_QSCRIPTVALUE_ENUM(primitiveMode, PrimitiveMode); COPY_PROPERTY_FROM_QSCRIPTVALUE(ignorePickIntersection, bool, setIgnorePickIntersection); + COPY_PROPERTY_FROM_QSCRIPTVALUE(renderWithZones, qVectorQUuid, setRenderWithZones); _grab.copyFromScriptValue(object, _defaultSettings); // Physics @@ -2293,6 +2300,7 @@ void EntityItemProperties::merge(const EntityItemProperties& other) { COPY_PROPERTY_IF_CHANGED(renderLayer); COPY_PROPERTY_IF_CHANGED(primitiveMode); COPY_PROPERTY_IF_CHANGED(ignorePickIntersection); + COPY_PROPERTY_IF_CHANGED(renderWithZones); _grab.merge(other._grab); // Physics @@ -2585,6 +2593,7 @@ bool EntityItemProperties::getPropertyInfo(const QString& propertyName, EntityPr ADD_PROPERTY_TO_MAP(PROP_RENDER_LAYER, RenderLayer, renderLayer, RenderLayer); ADD_PROPERTY_TO_MAP(PROP_PRIMITIVE_MODE, PrimitiveMode, primitiveMode, PrimitiveMode); ADD_PROPERTY_TO_MAP(PROP_IGNORE_PICK_INTERSECTION, IgnorePickIntersection, ignorePickIntersection, bool); + ADD_PROPERTY_TO_MAP(PROP_RENDER_WITH_ZONES, RenderWithZones, renderWithZones, QVector); { // Grab ADD_GROUP_PROPERTY_TO_MAP(PROP_GRAB_GRABBABLE, Grab, grab, Grabbable, grabbable); ADD_GROUP_PROPERTY_TO_MAP(PROP_GRAB_KINEMATIC, Grab, grab, GrabKinematic, grabKinematic); @@ -3073,6 +3082,7 @@ OctreeElement::AppendState EntityItemProperties::encodeEntityEditPacket(PacketTy APPEND_ENTITY_PROPERTY(PROP_RENDER_LAYER, (uint32_t)properties.getRenderLayer()); APPEND_ENTITY_PROPERTY(PROP_PRIMITIVE_MODE, (uint32_t)properties.getPrimitiveMode()); APPEND_ENTITY_PROPERTY(PROP_IGNORE_PICK_INTERSECTION, properties.getIgnorePickIntersection()); + APPEND_ENTITY_PROPERTY(PROP_RENDER_WITH_ZONES, properties.getRenderWithZones()); _staticGrab.setProperties(properties); _staticGrab.appendToEditPacket(packetData, requestedProperties, propertyFlags, propertiesDidntFit, propertyCount, appendState); @@ -3562,6 +3572,7 @@ bool EntityItemProperties::decodeEntityEditPacket(const unsigned char* data, int READ_ENTITY_PROPERTY_TO_PROPERTIES(PROP_RENDER_LAYER, RenderLayer, setRenderLayer); READ_ENTITY_PROPERTY_TO_PROPERTIES(PROP_PRIMITIVE_MODE, PrimitiveMode, setPrimitiveMode); READ_ENTITY_PROPERTY_TO_PROPERTIES(PROP_IGNORE_PICK_INTERSECTION, bool, setIgnorePickIntersection); + READ_ENTITY_PROPERTY_TO_PROPERTIES(PROP_RENDER_WITH_ZONES, QVector, setRenderWithZones); properties.getGrab().decodeFromEditPacket(propertyFlags, dataAt, processedBytes); // Physics @@ -3979,6 +3990,7 @@ void EntityItemProperties::markAllChanged() { _renderLayerChanged = true; _primitiveModeChanged = true; _ignorePickIntersectionChanged = true; + _renderWithZonesChanged = true; _grab.markAllChanged(); // Physics @@ -4381,6 +4393,9 @@ QList EntityItemProperties::listChangedProperties() { if (ignorePickIntersectionChanged()) { out += "ignorePickIntersection"; } + if (renderWithZonesChanged()) { + out += "renderWithZones"; + } getGrab().listChangedProperties(out); // Physics diff --git a/libraries/entities/src/EntityItemProperties.h b/libraries/entities/src/EntityItemProperties.h index 63d8183899..69c25cecdd 100644 --- a/libraries/entities/src/EntityItemProperties.h +++ b/libraries/entities/src/EntityItemProperties.h @@ -192,6 +192,7 @@ public: DEFINE_PROPERTY_REF_ENUM(PROP_RENDER_LAYER, RenderLayer, renderLayer, RenderLayer, RenderLayer::WORLD); DEFINE_PROPERTY_REF_ENUM(PROP_PRIMITIVE_MODE, PrimitiveMode, primitiveMode, PrimitiveMode, PrimitiveMode::SOLID); DEFINE_PROPERTY(PROP_IGNORE_PICK_INTERSECTION, IgnorePickIntersection, ignorePickIntersection, bool, false); + DEFINE_PROPERTY_REF(PROP_RENDER_WITH_ZONES, RenderWithZones, renderWithZones, QVector, QVector()); DEFINE_PROPERTY_GROUP(Grab, grab, GrabPropertyGroup); // Physics diff --git a/libraries/entities/src/EntityItemPropertiesMacros.h b/libraries/entities/src/EntityItemPropertiesMacros.h index 4c989ef74e..c25eb21e6c 100644 --- a/libraries/entities/src/EntityItemPropertiesMacros.h +++ b/libraries/entities/src/EntityItemPropertiesMacros.h @@ -119,6 +119,7 @@ inline QScriptValue qVectorVec3Color_convertScriptValue(QScriptEngine* e, const inline QScriptValue convertScriptValue(QScriptEngine* e, const QVector& v) {return qVectorQuatToScriptValue(e, v); } inline QScriptValue convertScriptValue(QScriptEngine* e, const QVector& v) {return qVectorBoolToScriptValue(e, v); } inline QScriptValue convertScriptValue(QScriptEngine* e, const QVector& v) { return qVectorFloatToScriptValue(e, v); } +inline QScriptValue convertScriptValue(QScriptEngine* e, const QVector& v) { return qVectorQUuidToScriptValue(e, v); } inline QScriptValue convertScriptValue(QScriptEngine* e, const QRect& v) { return qRectToScriptValue(e, v); } @@ -216,6 +217,7 @@ typedef QVector qVectorVec3; typedef QVector qVectorQuat; typedef QVector qVectorBool; typedef QVector qVectorFloat; +typedef QVector qVectorQUuid; inline float float_convertFromScriptValue(const QScriptValue& v, bool& isValid) { return v.toVariant().toFloat(&isValid); } inline quint64 quint64_convertFromScriptValue(const QScriptValue& v, bool& isValid) { return v.toVariant().toULongLong(&isValid); } inline quint32 quint32_convertFromScriptValue(const QScriptValue& v, bool& isValid) { @@ -293,6 +295,11 @@ inline qVectorBool qVectorBool_convertFromScriptValue(const QScriptValue& v, boo return qVectorBoolFromScriptValue(v); } +inline qVectorQUuid qVectorQUuid_convertFromScriptValue(const QScriptValue& v, bool& isValid) { + isValid = true; + return qVectorQUuidFromScriptValue(v); +} + inline glm::quat quat_convertFromScriptValue(const QScriptValue& v, bool& isValid) { isValid = false; /// assume it can't be converted QScriptValue x = v.property("x"); diff --git a/libraries/entities/src/EntityPropertyFlags.h b/libraries/entities/src/EntityPropertyFlags.h index d5af337a7d..c186b2b87f 100644 --- a/libraries/entities/src/EntityPropertyFlags.h +++ b/libraries/entities/src/EntityPropertyFlags.h @@ -43,6 +43,7 @@ enum EntityPropertyList { PROP_RENDER_LAYER, PROP_PRIMITIVE_MODE, PROP_IGNORE_PICK_INTERSECTION, + PROP_RENDER_WITH_ZONES, // Grab PROP_GRAB_GRABBABLE, PROP_GRAB_KINEMATIC, diff --git a/libraries/networking/src/udt/PacketHeaders.h b/libraries/networking/src/udt/PacketHeaders.h index fbf575065e..1bfeff5e7f 100644 --- a/libraries/networking/src/udt/PacketHeaders.h +++ b/libraries/networking/src/udt/PacketHeaders.h @@ -275,6 +275,7 @@ enum class EntityVersion : PacketVersion { ShadowBiasAndDistance, TextEntityFonts, ScriptServerKinematicMotion, + ZoneOcclusion, // Add new versions above here NUM_PACKET_TYPE, diff --git a/libraries/octree/src/OctreePacketData.cpp b/libraries/octree/src/OctreePacketData.cpp index 8ab502e951..5e6825c886 100755 --- a/libraries/octree/src/OctreePacketData.cpp +++ b/libraries/octree/src/OctreePacketData.cpp @@ -482,6 +482,19 @@ bool OctreePacketData::appendValue(const QVector& value) { return success; } +bool OctreePacketData::appendValue(const QVector& value) { + uint16_t qVecSize = value.size(); + bool success = appendValue(qVecSize); + if (success) { + success = append((const unsigned char*)value.constData(), qVecSize * sizeof(QUuid)); + if (success) { + _bytesOfValues += qVecSize * sizeof(QUuid); + _totalBytesOfValues += qVecSize * sizeof(QUuid); + } + } + return success; +} + bool OctreePacketData::appendValue(const glm::quat& value) { const size_t VALUES_PER_QUAT = 4; const size_t PACKED_QUAT_SIZE = sizeof(uint16_t) * VALUES_PER_QUAT; @@ -774,6 +787,15 @@ int OctreePacketData::unpackDataFromBytes(const unsigned char* dataBytes, QVecto return (dataBytes - start) + (int)sizeof(uint16_t); } +int OctreePacketData::unpackDataFromBytes(const unsigned char* dataBytes, QVector& result) { + uint16_t length; + memcpy(&length, dataBytes, sizeof(uint16_t)); + dataBytes += sizeof(length); + result.resize(length); + memcpy(result.data(), dataBytes, length * sizeof(QUuid)); + return sizeof(uint16_t) + length * sizeof(QUuid); +} + int OctreePacketData::unpackDataFromBytes(const unsigned char* dataBytes, QByteArray& result) { uint16_t length; memcpy(&length, dataBytes, sizeof(length)); diff --git a/libraries/octree/src/OctreePacketData.h b/libraries/octree/src/OctreePacketData.h index 46e5de9bda..2050dd1487 100644 --- a/libraries/octree/src/OctreePacketData.h +++ b/libraries/octree/src/OctreePacketData.h @@ -186,6 +186,9 @@ public: /// appends a QVector of bools to the end of the stream, may fail if new data stream is too long to fit in packet bool appendValue(const QVector& value); + /// appends a QVector of QUuids to the end of the stream, may fail if new data stream is too long to fit in packet + bool appendValue(const QVector& value); + /// appends a packed quat to the end of the stream, may fail if new data stream is too long to fit in packet bool appendValue(const glm::quat& value); @@ -284,6 +287,7 @@ public: static int unpackDataFromBytes(const unsigned char* dataBytes, QVector& result); static int unpackDataFromBytes(const unsigned char* dataBytes, QVector& result); static int unpackDataFromBytes(const unsigned char* dataBytes, QVector& result); + static int unpackDataFromBytes(const unsigned char* dataBytes, QVector& result); static int unpackDataFromBytes(const unsigned char* dataBytes, QByteArray& result); static int unpackDataFromBytes(const unsigned char* dataBytes, AACube& result); static int unpackDataFromBytes(const unsigned char* dataBytes, QRect& result); diff --git a/libraries/render-utils/src/MeshPartPayload.cpp b/libraries/render-utils/src/MeshPartPayload.cpp index e82af5395f..88ba24cbc2 100644 --- a/libraries/render-utils/src/MeshPartPayload.cpp +++ b/libraries/render-utils/src/MeshPartPayload.cpp @@ -55,6 +55,13 @@ template <> const ShapeKey shapeGetShapeKey(const MeshPartPayload::Pointer& payl template <> void payloadRender(const MeshPartPayload::Pointer& payload, RenderArgs* args) { return payload->render(args); } + +template <> bool payloadPassesZoneOcclusionTest(const MeshPartPayload::Pointer& payload, const std::unordered_set& containingZones) { + if (payload) { + return payload->passesZoneOcclusionTest(containingZones); + } + return false; +} } MeshPartPayload::MeshPartPayload(const std::shared_ptr& mesh, int partIndex, graphics::MaterialPointer material, const uint64_t& created) : @@ -167,10 +174,23 @@ void MeshPartPayload::bindMesh(gpu::Batch& batch) { batch.setInputStream(0, _drawMesh->getVertexStream()); } - void MeshPartPayload::bindTransform(gpu::Batch& batch, RenderArgs::RenderMode renderMode) const { +void MeshPartPayload::bindTransform(gpu::Batch& batch, RenderArgs::RenderMode renderMode) const { batch.setModelTransform(_drawTransform); } +bool MeshPartPayload::passesZoneOcclusionTest(const std::unordered_set& containingZones) const { + if (!_renderWithZones.isEmpty()) { + if (!containingZones.empty()) { + for (auto renderWithZone : _renderWithZones) { + if (containingZones.find(renderWithZone) != containingZones.end()) { + return true; + } + } + } + return false; + } + return true; +} void MeshPartPayload::render(RenderArgs* args) { PerformanceTimer perfTimer("MeshPartPayload::render"); @@ -242,6 +262,12 @@ template <> void payloadRender(const ModelMeshPartPayload::Pointer& payload, Ren return payload->render(args); } +template <> bool payloadPassesZoneOcclusionTest(const ModelMeshPartPayload::Pointer& payload, const std::unordered_set& containingZones) { + if (payload) { + return payload->passesZoneOcclusionTest(containingZones); + } + return false; +} } ModelMeshPartPayload::ModelMeshPartPayload(ModelPointer model, int meshIndex, int partIndex, int shapeIndex, diff --git a/libraries/render-utils/src/MeshPartPayload.h b/libraries/render-utils/src/MeshPartPayload.h index ee205bd778..db3e1fca4d 100644 --- a/libraries/render-utils/src/MeshPartPayload.h +++ b/libraries/render-utils/src/MeshPartPayload.h @@ -75,11 +75,15 @@ public: void setCullWithParent(bool value) { _cullWithParent = value; } + void setRenderWithZones(const QVector& renderWithZones) { _renderWithZones = renderWithZones; } + bool passesZoneOcclusionTest(const std::unordered_set& containingZones) const; + static bool enableMaterialProceduralShaders; protected: render::ItemKey _itemKey{ render::ItemKey::Builder::opaqueShape().build() }; bool _cullWithParent { false }; + QVector _renderWithZones; uint64_t _created; }; @@ -88,6 +92,7 @@ namespace render { template <> const Item::Bound payloadGetBound(const MeshPartPayload::Pointer& payload); template <> const ShapeKey shapeGetShapeKey(const MeshPartPayload::Pointer& payload); template <> void payloadRender(const MeshPartPayload::Pointer& payload, RenderArgs* args); + template <> bool payloadPassesZoneOcclusionTest(const MeshPartPayload::Pointer& payload, const std::unordered_set& containingZones); } class ModelMeshPartPayload : public MeshPartPayload { @@ -154,6 +159,7 @@ namespace render { template <> const Item::Bound payloadGetBound(const ModelMeshPartPayload::Pointer& payload); template <> const ShapeKey shapeGetShapeKey(const ModelMeshPartPayload::Pointer& payload); template <> void payloadRender(const ModelMeshPartPayload::Pointer& payload, RenderArgs* args); + template <> bool payloadPassesZoneOcclusionTest(const ModelMeshPartPayload::Pointer& payload, const std::unordered_set& containingZones); } #endif // hifi_MeshPartPayload_h diff --git a/libraries/render-utils/src/Model.cpp b/libraries/render-utils/src/Model.cpp index d8172112ff..db4fc46e36 100644 --- a/libraries/render-utils/src/Model.cpp +++ b/libraries/render-utils/src/Model.cpp @@ -976,6 +976,16 @@ void Model::setCullWithParent(bool cullWithParent) { } } +void Model::setRenderWithZones(const QVector& renderWithZones) { + render::Transaction transaction; + for(auto item : _modelMeshRenderItemIDs) { + transaction.updateItem(item, [renderWithZones](ModelMeshPartPayload& data) { + data.setRenderWithZones(renderWithZones); + }); + } + AbstractViewStateInterface::instance()->getMain3DScene()->enqueueTransaction(transaction); +} + const render::ItemKey Model::getRenderItemKeyGlobalFlags() const { return _renderItemKeyGlobalFlags; } diff --git a/libraries/render-utils/src/Model.h b/libraries/render-utils/src/Model.h index b677861e9f..ec68db4b27 100644 --- a/libraries/render-utils/src/Model.h +++ b/libraries/render-utils/src/Model.h @@ -131,6 +131,8 @@ public: void setCullWithParent(bool value); + void setRenderWithZones(const QVector& renderWithZones); + // Access the current RenderItemKey Global Flags used by the model and applied to the render items representing the parts of the model. const render::ItemKey getRenderItemKeyGlobalFlags() const; diff --git a/libraries/render/src/render/Args.h b/libraries/render/src/render/Args.h index a75192bad7..5fee00b370 100644 --- a/libraries/render/src/render/Args.h +++ b/libraries/render/src/render/Args.h @@ -13,15 +13,16 @@ #include #include #include +#include #include #include #include +#include #include #include "Forward.h" - class AABox; namespace render { @@ -142,13 +143,6 @@ namespace render { bool _takingSnapshot { false }; StencilMaskMode _stencilMaskMode { StencilMaskMode::NONE }; std::function _stencilMaskOperator; - - float _visionSqueezeX { 0.0f }; - float _visionSqueezeY { 0.0f }; - float _visionSqueezeTransition { 0.15f }; - int _visionSqueezePerEye { 0 }; - float _visionSqueezeGroundPlaneY { 0.0f }; - float _visionSqueezeSpotlightSize { 0.02f }; }; } diff --git a/libraries/render/src/render/CullTask.cpp b/libraries/render/src/render/CullTask.cpp index 068d6f9851..f309d5a3bf 100644 --- a/libraries/render/src/render/CullTask.cpp +++ b/libraries/render/src/render/CullTask.cpp @@ -19,6 +19,9 @@ using namespace render; +std::unordered_set CullTest::_containingZones = std::unordered_set(); +std::unordered_set CullTest::_prevContainingZones = std::unordered_set(); + CullTest::CullTest(CullFunctor& functor, RenderArgs* pargs, RenderDetails::Item& renderDetails, ViewFrustumPointer antiFrustum) : _functor(functor), _args(pargs), @@ -64,46 +67,8 @@ bool CullTest::solidAngleTest(const AABox& bound) { return true; } -void render::cullItems(const RenderContextPointer& renderContext, const CullFunctor& cullFunctor, RenderDetails::Item& details, - const ItemBounds& inItems, ItemBounds& outItems) { - assert(renderContext->args); - assert(renderContext->args->hasViewFrustum()); - - RenderArgs* args = renderContext->args; - const ViewFrustum& frustum = args->getViewFrustum(); - - details._considered += (int)inItems.size(); - - // Culling / LOD - for (auto item : inItems) { - if (item.bound.isNull()) { - outItems.emplace_back(item); // One more Item to render - continue; - } - - // TODO: some entity types (like lights) might want to be rendered even - // when they are outside of the view frustum... - bool inView; - { - PerformanceTimer perfTimer("boxIntersectsFrustum"); - inView = frustum.boxIntersectsFrustum(item.bound); - } - if (inView) { - bool bigEnoughToRender; - { - PerformanceTimer perfTimer("shouldRender"); - bigEnoughToRender = cullFunctor(args, item.bound); - } - if (bigEnoughToRender) { - outItems.emplace_back(item); // One more Item to render - } else { - details._tooSmall++; - } - } else { - details._outOfView++; - } - } - details._rendered += (int)outItems.size(); +bool CullTest::zoneOcclusionTest(const render::Item& item) { + return item.passesZoneOcclusionTest(_containingZones); } void FetchNonspatialItems::run(const RenderContextPointer& renderContext, const ItemFilter& filter, ItemBounds& outItems) { @@ -117,7 +82,7 @@ void FetchNonspatialItems::run(const RenderContextPointer& renderContext, const outItems.reserve(items.size()); for (auto& id : items) { auto& item = scene->getItem(id); - if (filter.test(item.getKey())) { + if (filter.test(item.getKey()) && item.passesZoneOcclusionTest(CullTest::_containingZones)) { outItems.emplace_back(ItemBound(id, item.getBound())); } } @@ -126,7 +91,6 @@ void FetchNonspatialItems::run(const RenderContextPointer& renderContext, const void FetchSpatialTree::configure(const Config& config) { _justFrozeFrustum = _justFrozeFrustum || (config.freezeFrustum && !_freezeFrustum); _freezeFrustum = config.freezeFrustum; - _lodAngle = config.lodAngle; } void FetchSpatialTree::run(const RenderContextPointer& renderContext, const Inputs& inputs, ItemSpatialTree::ItemSelection& outSelection) { @@ -215,7 +179,7 @@ void CullSpatialSelection::run(const RenderContextPointer& renderContext, PerformanceTimer perfTimer("insideFitItems"); for (auto id : inSelection.insideItems) { auto& item = scene->getItem(id); - if (filter.test(item.getKey())) { + if (filter.test(item.getKey()) && test.zoneOcclusionTest(item)) { ItemBound itemBound(id, item.getBound()); outItems.emplace_back(itemBound); if (item.getKey().isMetaCullGroup()) { @@ -230,7 +194,7 @@ void CullSpatialSelection::run(const RenderContextPointer& renderContext, PerformanceTimer perfTimer("insideSmallItems"); for (auto id : inSelection.insideSubcellItems) { auto& item = scene->getItem(id); - if (filter.test(item.getKey())) { + if (filter.test(item.getKey()) && test.zoneOcclusionTest(item)) { ItemBound itemBound(id, item.getBound()); outItems.emplace_back(itemBound); if (item.getKey().isMetaCullGroup()) { @@ -245,7 +209,7 @@ void CullSpatialSelection::run(const RenderContextPointer& renderContext, PerformanceTimer perfTimer("partialFitItems"); for (auto id : inSelection.partialItems) { auto& item = scene->getItem(id); - if (filter.test(item.getKey())) { + if (filter.test(item.getKey()) && test.zoneOcclusionTest(item)) { ItemBound itemBound(id, item.getBound()); outItems.emplace_back(itemBound); if (item.getKey().isMetaCullGroup()) { @@ -260,7 +224,7 @@ void CullSpatialSelection::run(const RenderContextPointer& renderContext, PerformanceTimer perfTimer("partialSmallItems"); for (auto id : inSelection.partialSubcellItems) { auto& item = scene->getItem(id); - if (filter.test(item.getKey())) { + if (filter.test(item.getKey()) && test.zoneOcclusionTest(item)) { ItemBound itemBound(id, item.getBound()); outItems.emplace_back(itemBound); if (item.getKey().isMetaCullGroup()) { @@ -277,7 +241,7 @@ void CullSpatialSelection::run(const RenderContextPointer& renderContext, PerformanceTimer perfTimer("insideFitItems"); for (auto id : inSelection.insideItems) { auto& item = scene->getItem(id); - if (filter.test(item.getKey())) { + if (filter.test(item.getKey()) && test.zoneOcclusionTest(item)) { ItemBound itemBound(id, item.getBound()); outItems.emplace_back(itemBound); if (item.getKey().isMetaCullGroup()) { @@ -292,7 +256,7 @@ void CullSpatialSelection::run(const RenderContextPointer& renderContext, PerformanceTimer perfTimer("insideSmallItems"); for (auto id : inSelection.insideSubcellItems) { auto& item = scene->getItem(id); - if (filter.test(item.getKey())) { + if (filter.test(item.getKey()) && test.zoneOcclusionTest(item)) { ItemBound itemBound(id, item.getBound()); if (test.solidAngleTest(itemBound.bound)) { outItems.emplace_back(itemBound); @@ -309,7 +273,7 @@ void CullSpatialSelection::run(const RenderContextPointer& renderContext, PerformanceTimer perfTimer("partialFitItems"); for (auto id : inSelection.partialItems) { auto& item = scene->getItem(id); - if (filter.test(item.getKey())) { + if (filter.test(item.getKey()) && test.zoneOcclusionTest(item)) { ItemBound itemBound(id, item.getBound()); if (test.frustumTest(itemBound.bound)) { outItems.emplace_back(itemBound); @@ -326,14 +290,12 @@ void CullSpatialSelection::run(const RenderContextPointer& renderContext, PerformanceTimer perfTimer("partialSmallItems"); for (auto id : inSelection.partialSubcellItems) { auto& item = scene->getItem(id); - if (filter.test(item.getKey())) { + if (filter.test(item.getKey()) && test.zoneOcclusionTest(item)) { ItemBound itemBound(id, item.getBound()); - if (test.frustumTest(itemBound.bound)) { - if (test.solidAngleTest(itemBound.bound)) { - outItems.emplace_back(itemBound); - if (item.getKey().isMetaCullGroup()) { - item.fetchMetaSubItemBounds(outItems, (*scene)); - } + if (test.frustumTest(itemBound.bound) && test.solidAngleTest(itemBound.bound)) { + outItems.emplace_back(itemBound); + if (item.getKey().isMetaCullGroup()) { + item.fetchMetaSubItemBounds(outItems, (*scene)); } } } @@ -444,3 +406,13 @@ void ApplyCullFunctorOnItemBounds::run(const RenderContextPointer& renderContext args->popViewFrustum(); } } + +void ClearContainingZones::run(const RenderContextPointer& renderContext) { + // This is a bit of a hack. We want to do zone culling as early as possible, so we do it + // during the RenderFetchCullSortTask (in CullSpatialSelection and FetchNonspatialItems), + // but the zones aren't collected until after (in SetupZones). To get around this, + // we actually use the zones from the previous frame to render, and then clear at the beginning + // of the next frame + CullTest::_prevContainingZones = CullTest::_containingZones; + CullTest::_containingZones.clear(); +} \ No newline at end of file diff --git a/libraries/render/src/render/CullTask.h b/libraries/render/src/render/CullTask.h index e67edd6666..9a7466223d 100644 --- a/libraries/render/src/render/CullTask.h +++ b/libraries/render/src/render/CullTask.h @@ -19,9 +19,6 @@ namespace render { using CullFunctor = std::function; - void cullItems(const RenderContextPointer& renderContext, const CullFunctor& cullFunctor, RenderDetails::Item& details, - const ItemBounds& inItems, ItemBounds& outItems); - // Culling Frustum / solidAngle test helper class struct CullTest { CullFunctor _functor; @@ -36,6 +33,10 @@ namespace render { bool frustumTest(const AABox& bound); bool antiFrustumTest(const AABox& bound); bool solidAngleTest(const AABox& bound); + bool zoneOcclusionTest(const render::Item& item); + + static std::unordered_set _containingZones; + static std::unordered_set _prevContainingZones; }; class FetchNonspatialItems { @@ -48,7 +49,6 @@ namespace render { Q_OBJECT Q_PROPERTY(int numItems READ getNumItems) Q_PROPERTY(bool freezeFrustum MEMBER freezeFrustum WRITE setFreezeFrustum) - Q_PROPERTY(float LODAngle MEMBER lodAngle NOTIFY dirty) public: int numItems{ 0 }; @@ -56,7 +56,6 @@ namespace render { bool freezeFrustum{ false }; - float lodAngle{ 2.0 }; public slots: void setFreezeFrustum(bool enabled) { freezeFrustum = enabled; emit dirty(); } @@ -68,7 +67,6 @@ namespace render { bool _freezeFrustum{ false }; // initialized by Config bool _justFrozeFrustum{ false }; ViewFrustum _frozenFrustum; - float _lodAngle; public: using Config = FetchSpatialTreeConfig; @@ -159,6 +157,12 @@ namespace render { render::CullFunctor _cullFunctor; }; + + class ClearContainingZones { + public: + using JobModel = Job::Model; + void run(const RenderContextPointer& renderContext); + }; } #endif // hifi_render_CullTask_h; \ No newline at end of file diff --git a/libraries/render/src/render/Item.cpp b/libraries/render/src/render/Item.cpp index 532964777f..f21df58368 100644 --- a/libraries/render/src/render/Item.cpp +++ b/libraries/render/src/render/Item.cpp @@ -154,4 +154,10 @@ namespace render { return payload->metaFetchMetaSubItems(subItems); } + template <> bool payloadPassesZoneOcclusionTest(const PayloadProxyInterface::Pointer& payload, const std::unordered_set& containingZones) { + if (!payload) { + return false; + } + return payload->passesZoneOcclusionTest(containingZones); + } } diff --git a/libraries/render/src/render/Item.h b/libraries/render/src/render/Item.h index 3383101b5b..cb9fb32c7f 100644 --- a/libraries/render/src/render/Item.h +++ b/libraries/render/src/render/Item.h @@ -436,6 +436,8 @@ public: virtual uint32_t fetchMetaSubItems(ItemIDs& subItems) const = 0; + virtual bool passesZoneOcclusionTest(const std::unordered_set& containingZones) const = 0; + ~PayloadInterface() {} // Status interface is local to the base class @@ -487,6 +489,8 @@ public: uint32_t fetchMetaSubItems(ItemIDs& subItems) const { return _payload->fetchMetaSubItems(subItems); } uint32_t fetchMetaSubItemBounds(ItemBounds& subItemBounds, Scene& scene) const; + bool passesZoneOcclusionTest(const std::unordered_set& containingZones) const { return _payload->passesZoneOcclusionTest(containingZones); } + // Access the status const StatusPointer& getStatus() const { return _payload->getStatus(); } @@ -537,6 +541,10 @@ template const ShapeKey shapeGetShapeKey(const std::shared_ptr& pay // Meta items act as the grouping object for several sub items (typically shapes). template uint32_t metaFetchMetaSubItems(const std::shared_ptr& payloadData, ItemIDs& subItems) { return 0; } +// Zone Occlusion Interface +// Allows payloads to determine if they should render or not, based on the zones that contain the current camera +template bool payloadPassesZoneOcclusionTest(const std::shared_ptr& payloadData, const std::unordered_set& containingZones) { return true; } + // THe Payload class is the real Payload to be used // THis allow anything to be turned into a Payload as long as the required interface functions are available // When creating a new kind of payload from a new "stuff" class then you need to create specialized version for "stuff" @@ -561,6 +569,8 @@ public: // Meta Type Interface virtual uint32_t fetchMetaSubItems(ItemIDs& subItems) const override { return metaFetchMetaSubItems(_data, subItems); } + virtual bool passesZoneOcclusionTest(const std::unordered_set& containingZones) const override { return payloadPassesZoneOcclusionTest(_data, containingZones); } + protected: DataPointer _data; @@ -615,6 +625,7 @@ public: virtual Item::Bound getBound() = 0; virtual void render(RenderArgs* args) = 0; virtual uint32_t metaFetchMetaSubItems(ItemIDs& subItems) const = 0; + virtual bool passesZoneOcclusionTest(const std::unordered_set& containingZones) const = 0; }; template <> const ItemKey payloadGetKey(const PayloadProxyInterface::Pointer& payload); @@ -622,7 +633,7 @@ template <> const Item::Bound payloadGetBound(const PayloadProxyInterface::Point template <> void payloadRender(const PayloadProxyInterface::Pointer& payload, RenderArgs* args); template <> uint32_t metaFetchMetaSubItems(const PayloadProxyInterface::Pointer& payload, ItemIDs& subItems); template <> const ShapeKey shapeGetShapeKey(const PayloadProxyInterface::Pointer& payload); - +template <> bool payloadPassesZoneOcclusionTest(const PayloadProxyInterface::Pointer& payload, const std::unordered_set& containingZones); typedef Item::PayloadPointer PayloadPointer; typedef std::vector Payloads; diff --git a/libraries/render/src/render/RenderFetchCullSortTask.cpp b/libraries/render/src/render/RenderFetchCullSortTask.cpp index ebcf5a432b..b2656a597f 100644 --- a/libraries/render/src/render/RenderFetchCullSortTask.cpp +++ b/libraries/render/src/render/RenderFetchCullSortTask.cpp @@ -74,6 +74,7 @@ void RenderFetchCullSortTask::build(JobModel& task, const Varying& input, Varyin const auto filteredLayeredOpaque = task.addJob("FilterLayeredOpaque", layeredOpaques, ItemKey::Layer::LAYER_1); const auto filteredLayeredTransparent = task.addJob("FilterLayeredTransparent", layeredTransparents, ItemKey::Layer::LAYER_1); + task.addJob("ClearContainingZones"); output = Output(BucketList{ opaques, transparents, lights, metas, filteredLayeredOpaque.getN(0), filteredLayeredTransparent.getN(0), diff --git a/libraries/shared/src/RegisteredMetaTypes.cpp b/libraries/shared/src/RegisteredMetaTypes.cpp index 87cd269c97..97ca26b221 100644 --- a/libraries/shared/src/RegisteredMetaTypes.cpp +++ b/libraries/shared/src/RegisteredMetaTypes.cpp @@ -36,6 +36,7 @@ int qVectorVec3MetaTypeId = qRegisterMetaType>(); int qVectorQuatMetaTypeId = qRegisterMetaType>(); int qVectorBoolMetaTypeId = qRegisterMetaType>(); int qVectorGLMUint32MetaTypeId = qRegisterMetaType>("QVector"); +int qVectorQUuidMetaTypeId = qRegisterMetaType>(); int quatMetaTypeId = qRegisterMetaType(); int pickRayMetaTypeId = qRegisterMetaType(); int collisionMetaTypeId = qRegisterMetaType(); @@ -58,6 +59,7 @@ void registerMetaTypes(QScriptEngine* engine) { qScriptRegisterMetaType(engine, qVectorBoolToScriptValue, qVectorBoolFromScriptValue); qScriptRegisterMetaType(engine, qVectorFloatToScriptValue, qVectorFloatFromScriptValue); qScriptRegisterMetaType(engine, qVectorIntToScriptValue, qVectorIntFromScriptValue); + qScriptRegisterMetaType(engine, qVectorQUuidToScriptValue, qVectorQUuidFromScriptValue); qScriptRegisterMetaType(engine, qSizeFToScriptValue, qSizeFFromScriptValue); qScriptRegisterMetaType(engine, qRectToScriptValue, qRectFromScriptValue); @@ -874,6 +876,22 @@ QVector qVectorFloatFromScriptValue(const QScriptValue& array) { return newVector; } +QScriptValue qVectorQUuidToScriptValue(QScriptEngine* engine, const QVector& vector) { + QScriptValue array = engine->newArray(); + for (int i = 0; i < vector.size(); i++) { + array.setProperty(i, quuidToScriptValue(engine, vector.at(i))); + } + return array; +} + +void qVectorQUuidFromScriptValue(const QScriptValue& array, QVector& vector) { + int length = array.property("length").toInteger(); + + for (int i = 0; i < length; i++) { + vector << array.property(i).toVariant().toUuid(); + } +} + QVector qVectorQUuidFromScriptValue(const QScriptValue& array) { if (!array.isArray()) { return QVector(); diff --git a/libraries/shared/src/RegisteredMetaTypes.h b/libraries/shared/src/RegisteredMetaTypes.h index 3b47bb70c6..fa7ae624b2 100644 --- a/libraries/shared/src/RegisteredMetaTypes.h +++ b/libraries/shared/src/RegisteredMetaTypes.h @@ -247,6 +247,8 @@ QVector qVectorFloatFromScriptValue(const QScriptValue& array); QScriptValue qVectorIntToScriptValue(QScriptEngine* engine, const QVector& vector); void qVectorIntFromScriptValue(const QScriptValue& array, QVector& vector); +QScriptValue qVectorQUuidToScriptValue(QScriptEngine* engine, const QVector& vector); +void qVectorQUuidFromScriptValue(const QScriptValue& array, QVector& vector); QVector qVectorQUuidFromScriptValue(const QScriptValue& array); QScriptValue aaCubeToScriptValue(QScriptEngine* engine, const AACube& aaCube); From c45ee33e971851c07a717c660a9e7e48c19bdfdf Mon Sep 17 00:00:00 2001 From: HifiExperiments Date: Mon, 13 Jan 2020 17:44:32 -0800 Subject: [PATCH 004/160] review comment --- libraries/avatars/src/HeadData.cpp | 12 ++++++------ libraries/entities/src/ModelEntityItem.cpp | 4 ++-- libraries/shared/src/BlendshapeConstants.cpp | 2 +- libraries/shared/src/BlendshapeConstants.h | 2 +- plugins/KasenAPIExample/src/KasenAPIExample.cpp | 2 +- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/libraries/avatars/src/HeadData.cpp b/libraries/avatars/src/HeadData.cpp index f19ee3de86..392b08d48c 100644 --- a/libraries/avatars/src/HeadData.cpp +++ b/libraries/avatars/src/HeadData.cpp @@ -102,8 +102,8 @@ const QVector& HeadData::getSummedBlendshapeCoefficients() { void HeadData::setBlendshape(QString name, float val) { // Check to see if the named blendshape exists, and then set its value if it does - auto it = blendshapeLookupMap.find(name); - if (it != blendshapeLookupMap.end()) { + auto it = BLENDSHAPE_LOOKUP_MAP.find(name); + if (it != BLENDSHAPE_LOOKUP_MAP.end()) { if (_blendshapeCoefficients.size() <= it.value()) { _blendshapeCoefficients.resize(it.value() + 1); } @@ -128,8 +128,8 @@ void HeadData::setBlendshape(QString name, float val) { } int HeadData::getBlendshapeIndex(const QString& name) { - auto it = blendshapeLookupMap.find(name); - int index = it != blendshapeLookupMap.end() ? it.value() : -1; + auto it = BLENDSHAPE_LOOKUP_MAP.find(name); + int index = it != BLENDSHAPE_LOOKUP_MAP.end() ? it.value() : -1; return index; } @@ -148,8 +148,8 @@ static const QString JSON_AVATAR_HEAD_LOOKAT = QStringLiteral("lookAt"); QJsonObject HeadData::toJson() const { QJsonObject headJson; QJsonObject blendshapesJson; - for (auto name : blendshapeLookupMap.keys()) { - auto index = blendshapeLookupMap[name]; + for (auto name : BLENDSHAPE_LOOKUP_MAP.keys()) { + auto index = BLENDSHAPE_LOOKUP_MAP[name]; float value = 0.0f; if (index < _blendshapeCoefficients.size()) { value += _blendshapeCoefficients[index]; diff --git a/libraries/entities/src/ModelEntityItem.cpp b/libraries/entities/src/ModelEntityItem.cpp index 9f54033373..3808844a6f 100644 --- a/libraries/entities/src/ModelEntityItem.cpp +++ b/libraries/entities/src/ModelEntityItem.cpp @@ -769,8 +769,8 @@ void ModelEntityItem::setBlendshapeCoefficients(const QString& blendshapeCoeffic withWriteLock([&] { for (auto& blendshape : newCoefficientsMap.keys()) { auto newCoefficient = newCoefficientsMap[blendshape]; - auto blendshapeIter = blendshapeLookupMap.find(blendshape); - if (newCoefficient.canConvert() && blendshapeIter != blendshapeLookupMap.end()) { + auto blendshapeIter = BLENDSHAPE_LOOKUP_MAP.find(blendshape); + if (newCoefficient.canConvert() && blendshapeIter != BLENDSHAPE_LOOKUP_MAP.end()) { float newCoefficientValue = newCoefficient.toFloat(); _blendshapeCoefficientsVector[blendshapeIter.value()] = newCoefficientValue; _blendshapeCoefficientsMap[blendshape] = newCoefficientValue; diff --git a/libraries/shared/src/BlendshapeConstants.cpp b/libraries/shared/src/BlendshapeConstants.cpp index 0150e3854f..83c8271340 100644 --- a/libraries/shared/src/BlendshapeConstants.cpp +++ b/libraries/shared/src/BlendshapeConstants.cpp @@ -77,7 +77,7 @@ const char* FACESHIFT_BLENDSHAPES[] = { "" }; -QMap blendshapeLookupMap = [] { +const QMap BLENDSHAPE_LOOKUP_MAP = [] { QMap toReturn; for (int i = 0; i < (int)Blendshapes::BlendshapeCount; i++) { toReturn[FACESHIFT_BLENDSHAPES[i]] = i; diff --git a/libraries/shared/src/BlendshapeConstants.h b/libraries/shared/src/BlendshapeConstants.h index 358efb6597..33d02de57d 100644 --- a/libraries/shared/src/BlendshapeConstants.h +++ b/libraries/shared/src/BlendshapeConstants.h @@ -19,7 +19,7 @@ /// The names of the blendshapes expected by Faceshift, terminated with an empty string. extern const char* FACESHIFT_BLENDSHAPES[]; -extern QMap blendshapeLookupMap; +extern const QMap BLENDSHAPE_LOOKUP_MAP; enum class Blendshapes : int { EyeBlink_L = 0, diff --git a/plugins/KasenAPIExample/src/KasenAPIExample.cpp b/plugins/KasenAPIExample/src/KasenAPIExample.cpp index b0a9c29519..9f81793037 100644 --- a/plugins/KasenAPIExample/src/KasenAPIExample.cpp +++ b/plugins/KasenAPIExample/src/KasenAPIExample.cpp @@ -113,7 +113,7 @@ private: } struct _HeadHelper : public HeadData { QMap getBlendshapeMap() const { - return blendshapeLookupMap; + return BLENDSHAPE_LOOKUP_MAP; } struct States { QVector base, summed, transient; }; States getBlendshapeStates() const { From f29cde66cd430e1788528dca5669eb3f772f6e50 Mon Sep 17 00:00:00 2001 From: Alezia Kurdis <60075796+AleziaKurdis@users.noreply.github.com> Date: Mon, 16 Mar 2020 23:16:14 -0400 Subject: [PATCH 005/160] Add alpha property on Shape entity Add the tooltip for the alpha property of Shape entity. --- scripts/system/create/assets/data/createAppTooltips.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/scripts/system/create/assets/data/createAppTooltips.json b/scripts/system/create/assets/data/createAppTooltips.json index 24f443f901..331b9aec65 100644 --- a/scripts/system/create/assets/data/createAppTooltips.json +++ b/scripts/system/create/assets/data/createAppTooltips.json @@ -5,6 +5,9 @@ "color": { "tooltip": "The RGB value of this entity." }, + "shapeAlpha": { + "tooltip": "The alpha of this entity." + }, "text": { "tooltip": "The text to display on the entity." }, From 1b3744ac73638e33e48bf354c4c1c68e9c7ae207 Mon Sep 17 00:00:00 2001 From: Alezia Kurdis <60075796+AleziaKurdis@users.noreply.github.com> Date: Mon, 16 Mar 2020 23:19:04 -0400 Subject: [PATCH 006/160] Add alpha property on Shape entity Add the "Alpha" property on the "Shape" entity editor. propertyID: "shapeAlpha", propertyName: "alpha", --- .../entityProperties/html/js/entityProperties.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/scripts/system/create/entityProperties/html/js/entityProperties.js b/scripts/system/create/entityProperties/html/js/entityProperties.js index 9e476d80aa..68fff96856 100644 --- a/scripts/system/create/entityProperties/html/js/entityProperties.js +++ b/scripts/system/create/entityProperties/html/js/entityProperties.js @@ -142,7 +142,17 @@ const GROUPS = [ label: "Color", type: "color", propertyID: "color", - } + }, + { + label: "Alpha", + type: "number-draggable", + min: 0, + max: 1, + step: 0.01, + decimals: 2, + propertyID: "shapeAlpha", + propertyName: "alpha", + }, ] }, { From 500c2eff5d2cc0a99c5df71d5cb7442b449b2cbf Mon Sep 17 00:00:00 2001 From: Alezia Kurdis <60075796+AleziaKurdis@users.noreply.github.com> Date: Wed, 18 Mar 2020 00:01:53 -0400 Subject: [PATCH 007/160] Adding tooltips for 3 other missing properties Adding tooltips for 3 other missing properties: - "alpha" of the "Image" Entity. - "billboardMode" of the "Web" Entity. - "showKeyboardFocusHighlight" of the "Web" Entity. --- .../system/create/assets/data/createAppTooltips.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/scripts/system/create/assets/data/createAppTooltips.json b/scripts/system/create/assets/data/createAppTooltips.json index 331b9aec65..4b32bbf6db 100644 --- a/scripts/system/create/assets/data/createAppTooltips.json +++ b/scripts/system/create/assets/data/createAppTooltips.json @@ -199,6 +199,9 @@ "tooltip": "The tint to be applied to the image.", "jsPropertyName": "color" }, + "imageAlpha": { + "tooltip": "The alpha of the image." + }, "emissive": { "tooltip": "If enabled, the image will display at full brightness." }, @@ -218,6 +221,13 @@ "dpi": { "tooltip": "The resolution to display the page at, in pixels per inch. Use this to resize your web source in the frame." }, + "webBillboardMode": { + "tooltip": "If enabled, determines how the entity will face the camera.", + "jsPropertyName": "billboardMode" + }, + "showKeyboardFocusHighlight": { + "tooltip": "If enabled, highlights when it has keyboard focus." + }, "isEmitting": { "tooltip": "If enabled, then particles are emitted." }, From 35e76610a865e62bd41a41f4ae12e4a4b9e09b3c Mon Sep 17 00:00:00 2001 From: Alezia Kurdis <60075796+AleziaKurdis@users.noreply.github.com> Date: Wed, 18 Mar 2020 00:06:18 -0400 Subject: [PATCH 008/160] Added 3 other missing properties Added 3 other missing properties: - "alpha" of the "Image" Entity. - "billboardMode" of the "Web" Entity. - "showKeyboardFocusHighlight" of the "Web" Entity. --- .../html/js/entityProperties.js | 34 ++++++++++++++----- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/scripts/system/create/entityProperties/html/js/entityProperties.js b/scripts/system/create/entityProperties/html/js/entityProperties.js index 68fff96856..63aa39e552 100644 --- a/scripts/system/create/entityProperties/html/js/entityProperties.js +++ b/scripts/system/create/entityProperties/html/js/entityProperties.js @@ -1,15 +1,9 @@ -//VERSION 2.0 -// Modified by Alezia Kurdis on on 02/27/2020 -// for "Project Athena" -// -// Addition of a tab mechanism instead of collapsible sections to reduce the scrolling. -// -//VERSION 1.0 // entityProperties.js // // Created by Ryan Huffman on 13 Nov 2014 // Modified by David Back on 19 Oct 2018 // Copyright 2014 High Fidelity, Inc. +// Copyright 2020 Project Athena contributors. // // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html @@ -661,6 +655,16 @@ const GROUPS = [ propertyID: "imageColor", propertyName: "color", // actual entity property name }, + { + label: "Alpha", + type: "number-draggable", + min: 0, + max: 1, + step: 0.01, + decimals: 2, + propertyID: "imageAlpha", + propertyName: "alpha", + }, { label: "Emissive", type: "bool", @@ -725,6 +729,18 @@ const GROUPS = [ decimals: 0, propertyID: "maxFPS", }, + { + label: "Billboard Mode", + type: "dropdown", + options: { none: "None", yaw: "Yaw", full: "Full"}, + propertyID: "webBillboardMode", + propertyName: "billboardMode", // actual entity property name + }, + { + label: "Focus Highlight", + type: "bool", + propertyID: "showKeyboardFocusHighlight", + }, { label: "Script URL", type: "string", @@ -1870,7 +1886,7 @@ function resetServerScriptStatus() { function showGroupsForType(type) { if (type === "Box" || type === "Sphere") { showGroupsForTypes(["Shape"]); - showOnTheSamePage("Shape"); + showOnTheSamePage(["Shape"]); return; } if (type === "None") { @@ -1878,7 +1894,7 @@ function showGroupsForType(type) { return; } showGroupsForTypes([type]); - showOnTheSamePage(type); + showOnTheSamePage([type]); } function getGroupsForTypes(types) { From 5fad30dc179d1fb193e1526ad71b47522ac70440 Mon Sep 17 00:00:00 2001 From: Alezia Kurdis <60075796+AleziaKurdis@users.noreply.github.com> Date: Wed, 18 Mar 2020 19:12:48 -0400 Subject: [PATCH 009/160] Added 5 missing properties Added 5 missing properties On "TEXT" entity: - font - textEffect - textEffectThickness - textEffectColor On "WEB" entity: - inputMode --- .../create/assets/data/createAppTooltips.json | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/scripts/system/create/assets/data/createAppTooltips.json b/scripts/system/create/assets/data/createAppTooltips.json index 4b32bbf6db..9ea7ad886b 100644 --- a/scripts/system/create/assets/data/createAppTooltips.json +++ b/scripts/system/create/assets/data/createAppTooltips.json @@ -26,6 +26,18 @@ "lineHeight": { "tooltip": "The height of each line of text. This determines the size of the text." }, + "font": { + "tooltip": "The font to render the text. Supported values: \"Courier\", \"Inconsolata\", \"Roboto\", \"Timeless\", or a URL to a .sdff file." + }, + "textEffect": { + "tooltip": "The effect that is applied to the text." + }, + "textEffectColor": { + "tooltip": "The color of the text effect." + }, + "textEffectThickness": { + "tooltip": "The magnitude of the text effect." + }, "textBillboardMode": { "tooltip": "If enabled, determines how the entity will face the camera.", "jsPropertyName": "billboardMode" @@ -225,6 +237,9 @@ "tooltip": "If enabled, determines how the entity will face the camera.", "jsPropertyName": "billboardMode" }, + "inputMode": { + "tooltip": "The user input mode to use." + }, "showKeyboardFocusHighlight": { "tooltip": "If enabled, highlights when it has keyboard focus." }, From 1b53014030c17f9e095d9dca6bb3f20587142bf6 Mon Sep 17 00:00:00 2001 From: Alezia Kurdis <60075796+AleziaKurdis@users.noreply.github.com> Date: Wed, 18 Mar 2020 19:39:18 -0400 Subject: [PATCH 010/160] Added 5 missing properties Added 5 missing properties On "TEXT" entity: - font - textEffect - textEffectThickness - textEffectColor On "WEB" entity: - inputMode Added "physics" section to "MATERIAL" entity. Allowed negative values to be entered on the following light intensity properties: - ZONE: keyLight intensity - ZONE: ambientLight intensity - LIGHT: intensity --- .../html/js/entityProperties.js | 48 +++++++++++++++++-- 1 file changed, 43 insertions(+), 5 deletions(-) diff --git a/scripts/system/create/entityProperties/html/js/entityProperties.js b/scripts/system/create/entityProperties/html/js/entityProperties.js index 63aa39e552..d5e29ac165 100644 --- a/scripts/system/create/entityProperties/html/js/entityProperties.js +++ b/scripts/system/create/entityProperties/html/js/entityProperties.js @@ -1,7 +1,6 @@ // entityProperties.js // // Created by Ryan Huffman on 13 Nov 2014 -// Modified by David Back on 19 Oct 2018 // Copyright 2014 High Fidelity, Inc. // Copyright 2020 Project Athena contributors. // @@ -195,6 +194,36 @@ const GROUPS = [ unit: "m", propertyID: "lineHeight", }, + { + label: "Font", + type: "string", + propertyID: "font", + }, + { + label: "Effect", + type: "dropdown", + options: { + none: "None", + outline: "Outline", + outlineFill: "Outline with fill", + shadow: "Shadow" + }, + propertyID: "textEffect", + }, + { + label: "Effect Color", + type: "color", + propertyID: "textEffectColor", + }, + { + label: "Effect Thickness", + type: "number-draggable", + min: 0.0, + max: 0.5, + step: 0.01, + decimals: 2, + propertyID: "textEffectThickness", + }, { label: "Billboard Mode", type: "dropdown", @@ -292,7 +321,7 @@ const GROUPS = [ { label: "Light Intensity", type: "number-draggable", - min: 0, + min: -40, max: 40, step: 0.01, decimals: 2, @@ -384,7 +413,7 @@ const GROUPS = [ { label: "Ambient Intensity", type: "number-draggable", - min: 0, + min: -200, max: 200, step: 0.1, decimals: 2, @@ -736,6 +765,15 @@ const GROUPS = [ propertyID: "webBillboardMode", propertyName: "billboardMode", // actual entity property name }, + { + label: "Input Mode", + type: "dropdown", + options: { + touch: "Touch events", + mouse: "Mouse events" + }, + propertyID: "inputMode", + }, { label: "Focus Highlight", type: "bool", @@ -762,7 +800,7 @@ const GROUPS = [ { label: "Intensity", type: "number-draggable", - min: 0, + min: -1000, max: 10000, step: 0.1, decimals: 2, @@ -1627,7 +1665,7 @@ const GROUPS_PER_TYPE = { Image: [ 'base', 'image', 'spatial', 'behavior', 'scripts', 'collision', 'physics' ], Web: [ 'base', 'web', 'spatial', 'behavior', 'scripts', 'collision', 'physics' ], Light: [ 'base', 'light', 'spatial', 'behavior', 'scripts', 'collision', 'physics' ], - Material: [ 'base', 'material', 'spatial', 'behavior', 'scripts' ], + Material: [ 'base', 'material', 'spatial', 'behavior', 'scripts', 'physics' ], ParticleEffect: [ 'base', 'particles', 'particles_emit', 'particles_size', 'particles_color', 'particles_behavior', 'particles_constraints', 'spatial', 'behavior', 'scripts', 'physics' ], PolyLine: [ 'base', 'spatial', 'behavior', 'scripts', 'collision', 'physics' ], From 1f72e995d76369b9052383180f8590f7f69a22ea Mon Sep 17 00:00:00 2001 From: Alezia Kurdis <60075796+AleziaKurdis@users.noreply.github.com> Date: Thu, 19 Mar 2020 01:00:21 -0400 Subject: [PATCH 011/160] Fix the "outline fill" of the textEffect property Fix the "outline fill" of the textEffect property The value to used was "outline fill" and not "outlineFill" as the JS doc pretends. Issue #221 has been open to fix the JSdoc. The usage of a space separated value has been imagined to preserve the backward compatibility of the existing script. in order to support a list (space separated) of effects to apply instead of a single effect as today. --- .../system/create/entityProperties/html/js/entityProperties.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/system/create/entityProperties/html/js/entityProperties.js b/scripts/system/create/entityProperties/html/js/entityProperties.js index d5e29ac165..8f3fdc53f2 100644 --- a/scripts/system/create/entityProperties/html/js/entityProperties.js +++ b/scripts/system/create/entityProperties/html/js/entityProperties.js @@ -205,7 +205,7 @@ const GROUPS = [ options: { none: "None", outline: "Outline", - outlineFill: "Outline with fill", + "outline fill": "Outline with fill", shadow: "Shadow" }, propertyID: "textEffect", From c86bf3dd7dfc906eaa5651a2d0e4f20dd870251f Mon Sep 17 00:00:00 2001 From: Alezia Kurdis <60075796+AleziaKurdis@users.noreply.github.com> Date: Fri, 20 Mar 2020 23:01:28 -0400 Subject: [PATCH 012/160] New tooltips for the alpha properties. This fix replaces the text of the tooltips of all the "alpha" properties by a more informative text for profane users. --- .../create/assets/data/createAppTooltips.json | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/scripts/system/create/assets/data/createAppTooltips.json b/scripts/system/create/assets/data/createAppTooltips.json index 9ea7ad886b..68b7cfe59a 100644 --- a/scripts/system/create/assets/data/createAppTooltips.json +++ b/scripts/system/create/assets/data/createAppTooltips.json @@ -3,10 +3,10 @@ "tooltip": "The shape of this entity's geometry." }, "color": { - "tooltip": "The RGB value of this entity." + "tooltip": "The color of this entity." }, "shapeAlpha": { - "tooltip": "The alpha of this entity." + "tooltip": "Set the opacity of the entity between 0.0 fully transparent and 1.0 completely opaque." }, "text": { "tooltip": "The text to display on the entity." @@ -15,13 +15,13 @@ "tooltip": "The color of the text." }, "textAlpha": { - "tooltip": "The alpha of the text." + "tooltip": "Set the opacity of the text between 0.0 fully transparent and 1.0 completely opaque." }, "backgroundColor": { "tooltip": "The color of the background." }, "backgroundAlpha": { - "tooltip": "The alpha of the background." + "tooltip": "Set the opacity of the background between 0.0 fully transparent and 1.0 completely opaque." }, "lineHeight": { "tooltip": "The height of each line of text. This determines the size of the text." @@ -212,7 +212,7 @@ "jsPropertyName": "color" }, "imageAlpha": { - "tooltip": "The alpha of the image." + "tooltip": "Set the opacity of the image between 0.0 fully transparent and 1.0 completely opaque." }, "emissive": { "tooltip": "If enabled, the image will display at full brightness." @@ -319,20 +319,20 @@ "tooltip": "The spread in color that each particle is given, resulting in a variety of colors." }, "particleAlphaTriple": { - "tooltip": "The alpha of each particle.", + "tooltip": "Set the opacity of the each particle between 0.0 fully transparent and 1.0 completely opaque.", "jsPropertyName": "alpha" }, "alpha": { - "tooltip": "The alpha of each particle." + "tooltip": "Set the opacity of the each particle between 0.0 fully transparent and 1.0 completely opaque." }, "alphaStart": { - "tooltip": "The start alpha of each particle." + "tooltip": "Set the initial opacity level of the each particle between 0.0 fully transparent and 1.0 completely opaque." }, "alphaFinish": { - "tooltip": "The finish alpha of each particle." + "tooltip": "Set the final opacity level of the each particle between 0.0 fully transparent and 1.0 completely opaque." }, "alphaSpread": { - "tooltip": "The spread in alpha that each particle is given, resulting in a variety of alphas." + "tooltip": "The spread in opacity that each particle is given, resulting in a variety of opacity levels." }, "emitAcceleration": { "tooltip": "The acceleration that is applied to each particle during its lifetime." @@ -602,7 +602,7 @@ "tooltip": "The tint of the web entity." }, "webAlpha": { - "tooltip": "The alpha of the web entity." + "tooltip": "Set the opacity of the web entity between 0.0 fully transparent and 1.0 completely opaque." }, "maxFPS": { "tooltip": "The FPS at which to render the web entity. Higher values will have a performance impact." From 90ef2ee0700938c8475bbc042405bd821b0ddcfa Mon Sep 17 00:00:00 2001 From: Alezia Kurdis <60075796+AleziaKurdis@users.noreply.github.com> Date: Sun, 22 Mar 2020 16:25:29 -0400 Subject: [PATCH 013/160] Replace Label "Allow Transition" Replace Label "Allow Transition" for "Allow Translation". --- .../system/create/entityProperties/html/js/entityProperties.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/system/create/entityProperties/html/js/entityProperties.js b/scripts/system/create/entityProperties/html/js/entityProperties.js index 8f3fdc53f2..0d15b8ece5 100644 --- a/scripts/system/create/entityProperties/html/js/entityProperties.js +++ b/scripts/system/create/entityProperties/html/js/entityProperties.js @@ -620,7 +620,7 @@ const GROUPS = [ propertyID: "animation.loop", }, { - label: "Allow Transition", + label: "Allow Translation", type: "bool", propertyID: "animation.allowTranslation", }, From 7cea4fc57471a6ad52511410bcbb6fe95d70f926 Mon Sep 17 00:00:00 2001 From: Heather Anderson Date: Fri, 3 Apr 2020 02:15:36 -0700 Subject: [PATCH 014/160] separate user activity logging from crash logging, allowing people to say "no" to tracking while still sending crashes --- interface/src/Menu.cpp | 6 ++++++ interface/src/Menu.h | 1 + interface/src/main.cpp | 2 +- interface/src/ui/PreferencesDialog.cpp | 10 +++++++++- libraries/networking/src/UserActivityLogger.cpp | 4 ++++ libraries/networking/src/UserActivityLogger.h | 5 +++++ 6 files changed, 26 insertions(+), 2 deletions(-) diff --git a/interface/src/Menu.cpp b/interface/src/Menu.cpp index fbb69842bd..a567033c2f 100644 --- a/interface/src/Menu.cpp +++ b/interface/src/Menu.cpp @@ -603,6 +603,12 @@ Menu::Menu() { false, &UserActivityLogger::getInstance(), SLOT(disable(bool))); + addCheckableActionToQMenuAndActionHash(networkMenu, + MenuOption::DisableCrashLogger, + 0, + false, + &UserActivityLogger::getInstance(), + SLOT(crashDisable(bool))); addActionToQMenuAndActionHash(networkMenu, MenuOption::ShowDSConnectTable, 0, qApp, SLOT(loadDomainConnectionDialog())); diff --git a/interface/src/Menu.h b/interface/src/Menu.h index 1d6c010a05..19b42eb3f1 100644 --- a/interface/src/Menu.h +++ b/interface/src/Menu.h @@ -86,6 +86,7 @@ namespace MenuOption { const QString DeleteAvatarEntitiesBookmark = "Delete Avatar Entities Bookmark"; const QString DeleteBookmark = "Delete Bookmark..."; const QString DisableActivityLogger = "Disable Activity Logger"; + const QString DisableCrashLogger = "Disable Crash Logger"; const QString DisableEyelidAdjustment = "Disable Eyelid Adjustment"; const QString DisableLightEntities = "Disable Light Entities"; const QString DisplayCrashOptions = "Display Crash Options"; diff --git a/interface/src/main.cpp b/interface/src/main.cpp index 81616e5773..27171a5828 100644 --- a/interface/src/main.cpp +++ b/interface/src/main.cpp @@ -218,7 +218,7 @@ int main(int argc, const char* argv[]) { } qDebug() << "UserActivityLogger is enabled:" << ual.isEnabled(); - if (ual.isEnabled()) { + if (ual.isCrashEnabled()) { auto crashHandlerStarted = startCrashHandler(argv[0]); qDebug() << "Crash handler started:" << crashHandlerStarted; } diff --git a/interface/src/ui/PreferencesDialog.cpp b/interface/src/ui/PreferencesDialog.cpp index 7e11406808..5791a06b85 100644 --- a/interface/src/ui/PreferencesDialog.cpp +++ b/interface/src/ui/PreferencesDialog.cpp @@ -254,7 +254,15 @@ void setupPreferences() { auto setter = [](bool value) { Menu::getInstance()->setIsOptionChecked(MenuOption::DisableActivityLogger, !value); }; preferences->addPreference(new CheckPreference("Privacy", "Send data - High Fidelity uses information provided by your " "client to improve the product through the logging of errors, tracking of usage patterns, " - "installation and system details, and crash events. By allowing High Fidelity to collect " + "installation and system details. By allowing High Fidelity to collect this information " + "you are helping to improve the product. ", getter, setter)); + } + + { + auto getter = []()->bool { return !Menu::getInstance()->isOptionChecked(MenuOption::DisableCrashLogger); }; + auto setter = [](bool value) { Menu::getInstance()->setIsOptionChecked(MenuOption::DisableCrashLogger, !value); }; + preferences->addPreference(new CheckPreference("Privacy", "Send crashes - Vircadia uses information provided by your " + "client to improve the product through crash events. By allowing Vircadia to collect " "this information you are helping to improve the product. ", getter, setter)); } diff --git a/libraries/networking/src/UserActivityLogger.cpp b/libraries/networking/src/UserActivityLogger.cpp index 269ff94b80..ec04d03851 100644 --- a/libraries/networking/src/UserActivityLogger.cpp +++ b/libraries/networking/src/UserActivityLogger.cpp @@ -34,6 +34,10 @@ void UserActivityLogger::disable(bool disable) { _disabled.set(disable); } +void UserActivityLogger::crashDisable(bool disable) { + _crashDisabled.set(disable); +} + void UserActivityLogger::logAction(QString action, QJsonObject details, JSONCallbackParameters params) { // qCDebug(networking).nospace() << ">>> UserActivityLogger::logAction(" << action << "," << QJsonDocument(details).toJson(); // This logs what the UserActivityLogger would normally send to centralized servers. diff --git a/libraries/networking/src/UserActivityLogger.h b/libraries/networking/src/UserActivityLogger.h index e4b91b1e81..a9bc5a8509 100644 --- a/libraries/networking/src/UserActivityLogger.h +++ b/libraries/networking/src/UserActivityLogger.h @@ -35,7 +35,11 @@ public slots: bool isEnabled() { return !_disabled.get(); } bool isDisabledSettingSet() const { return _disabled.isSet(); } + bool isCrashEnabled() { return !_crashDisabled.get(); } + bool isCrashDisabledSettingSet() const { return _crashDisabled.isSet(); } + void disable(bool disable); + void crashDisable(bool disable); void logAction(QString action, QJsonObject details = QJsonObject(), JSONCallbackParameters params = JSONCallbackParameters()); void launch(QString applicationVersion, bool previousSessionCrashed, int previousSessionRuntime); @@ -55,6 +59,7 @@ private slots: private: UserActivityLogger(); Setting::Handle _disabled { "UserActivityLoggerDisabled", true }; + Setting::Handle _crashDisabled { "CrashLoggerDisabled", true }; QElapsedTimer _timer; }; From 4b4a1bd8c01247d43665ed6728aad068d86bba5c Mon Sep 17 00:00:00 2001 From: Alezia Kurdis <60075796+AleziaKurdis@users.noreply.github.com> Date: Fri, 3 Apr 2020 23:23:20 -0400 Subject: [PATCH 015/160] Icons for "Multiple Zones Selector" Renderer 2 new icon added for the "Multiple Zones Selector" Renderer (required for the new property "renderWithZones" for PR#78): "Add" and "Remove". --- scripts/system/html/css/img/add_icon.png | Bin 0 -> 725 bytes scripts/system/html/css/img/remove_icon.png | Bin 0 -> 827 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 scripts/system/html/css/img/add_icon.png create mode 100644 scripts/system/html/css/img/remove_icon.png diff --git a/scripts/system/html/css/img/add_icon.png b/scripts/system/html/css/img/add_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..f60e5561f2404416da3c61b33459a50011237795 GIT binary patch literal 725 zcmWlQeN2pT0LQ=2bI-liUH9nXlGdKyw&aS|sf*O_(yL^rGRLG-M)Q(dHHYMRDqLg9 z+eQ+Zmm6lgv1zmvS8Gd?@dq*EiA*!@$X4`X_s8e2&*#%*UYDiz3GxA;&dE;C2cYw! zkOBA@{rV~ZWkvR;D!^Ckg+gmvAOL2kDbEBrn`{5AKMQ~>&CbsQ4n_ie128oQ@ZW%% zWx%)5qjAXG8!*&#-tx&3j+hb&pDV3gQ52u9{aB)57{u%)o~pE4A!cX$Xsp0!+^#I;+n zY5i*A$b01|81{KZDOcXFb^cViPn$y7LqZ@ZCcZ1gp5!UBhK1d0F=?Z^K`X8gpf%c| zB%z;ZmT=Dwdm?fIKa$b=+HHcIz)9j2s%fd%K&C_N3p+}AoCKjtzz{Y*XjWZ|q5q%9PiUF8^IZ1VNl>FC)Adu3n==AjLQxfA9li#~Rw zX-DTu_Ljf9FOLT;9ZcY6v&g57hS~jL^<|0PG?j84ceFK?^TBGCtTk^;^sksnrE9AZ zeXE;h*t;h&f3nCH@cWwQfZI`|at#s{kF;2RoVO|4BgQmC!3o2Ky?nS>WexU+tY8K1=bPcLmMhgWuaqV~FgQvLh=d9(nL9Le+Q=&0ywoy;9q;t)) zA@kBllyixLrAroV!Z literal 0 HcmV?d00001 diff --git a/scripts/system/html/css/img/remove_icon.png b/scripts/system/html/css/img/remove_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..7a34bd0304896700a1ae1999fa2fe784a1fb93bd GIT binary patch literal 827 zcmV-B1H}A^P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;u}MThRCwBA{Qv(y1FZl+05LJp5C8-a3yd*!>Qrp< zVnFNx#125L4#Yx0{1b>j0P!Ip-T=hs&^2XeXM<^g0K(_;I3PX`#0!Bq3aa)d5WfUs zDIl%|;*0>tq^{1zIPX+X@3#ZZuoU7@}`2KB8eC_Z5d z00IcvaBm=10OEQez7G`xrIeY_I6yaeClI#-F$Yv^HW1%NHXI;;kPQbJ^c{#dB8e@9 z8eRm%Jy0=FL-k7l@sp z=^PY4m(Y9!N-dvZ9Do2qHe4ErPhtt%e?S}wO@5&8e-Ff#&@_(@-a#`N7ytwi6I$|O z#gQWHp}_%C!w1b^*Z?cCnE(NVZ1@#u7DrE>c0jxt8blyV`hmC#nz7K;$^tPDi~|rr z$iV`N{Td*aLrUL{K)fA@pF&g9O=!?@A*G5UsE=SN?k~(hfB-_ac?*t)ZkfAd03gP3B(al$AAGq03o{^AwbA6rj|Z00G2;!$pUo$u19Ch_wRo zH)yH=6=Iw~{0E5FLkqi$*bD&(AVykN&;S8M(+V0OzyQ))ga|16d?o+@002ovPDHLk FV1l|4EUW+k literal 0 HcmV?d00001 From 0338d8a9f494c60e17803c1a1eabc0d076153532 Mon Sep 17 00:00:00 2001 From: Alezia Kurdis <60075796+AleziaKurdis@users.noreply.github.com> Date: Fri, 3 Apr 2020 23:27:01 -0400 Subject: [PATCH 016/160] New classes for the "Multiple Zones Selector" Renderer Added: New CSS classes for the "Multiple Zones Selector" Renderer (Required for the new property "renderWithZones" for PR#78) --- scripts/system/html/css/edit-style.css | 3618 ++++++++++++------------ 1 file changed, 1822 insertions(+), 1796 deletions(-) diff --git a/scripts/system/html/css/edit-style.css b/scripts/system/html/css/edit-style.css index 470e57ad6d..4aea29de38 100644 --- a/scripts/system/html/css/edit-style.css +++ b/scripts/system/html/css/edit-style.css @@ -1,1796 +1,1822 @@ -/* -// 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 { - - color: #afafaf; - background-color: #404040; - font-family: Raleway-Regular; - font-size: 12px; - - -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 0; - border-bottom: 1px solid #575757; - width: 100%; -} - -tbody { - width: 100%; - display: block; -} - -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: clip; - white-space: nowrap; - word-wrap: nowrap; - padding-left: 12px; - padding-right: 12px; -} - -td.hidden { - padding-left: 0; - padding-right: 0; -} - -td.url { - white-space: nowrap; - overflow: hidden; -} - - -input[type="text"], input[type="search"], 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, button: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 0 1px #00b4ef; -} - -input:disabled, textarea:disabled, .draggable-number.text[disabled="disabled"] { - background-color: #383838; - color: #afafaf; -} - -input[type="text"] { - height: 28px; - width: 100%; -} - -input.multi-diff:not(:focus) + span.multi-diff, -textarea.multi-diff:not(:focus) + span.multi-diff, -.draggable-number.multi-diff>input:not(:focus)+span.multi-diff, -dl>dt.multi-diff:not(:focus) + span.multi-diff { - visibility: visible; - position: absolute; - display: inline-block; - z-index: 2; - top: 7.5px; - left: 20px; - max-width: 50px; - min-width: 10px; - width: 50%; - height: 13px; - background-image: linear-gradient(transparent 0%, transparent 10%, #afafaf 10%, #afafaf 20%, transparent 20%, transparent 45%, #afafaf 45%, #afafaf 55%, transparent 55%, transparent 80%, #afafaf 80%, #afafaf 90%, transparent 90%, transparent 100%); - background-repeat: no-repeat; - pointer-events: none; -} - -input.multi-diff:not(:focus)::-webkit-input-placeholder, input.multi-diff:not(:focus) { - color: transparent; -} - -.draggable-number.multi-diff .text { - color: transparent; -} - -.dropdown > span.multi-diff { - top: 5px; - left: 10px; -} - -.text, .url, .texture, .textarea { - position: relative; -} - -input[type="search"] { - height: 28px; - width: 100%; -} -input[type="search"]::-webkit-search-cancel-button { - -webkit-appearance: none; - height: 20px; - width: 20px; - background-image: url('data:image/png;base64,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') -} - -input[type="number"] { - position: relative; - height: 28px; - width: 124px; -} -input[type=number] { - padding-right: 3px; -} -input[type=number]::-webkit-inner-spin-button { - opacity: 1.0; - display: block; - position: relative; - width: 10px; - height: 90%; - overflow: hidden; - font-family: HiFi-Glyphs; - font-size: 32px; - 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[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]::-webkit-slider-thumb:hover { - background-color: white; -} -input[type=range]:focus { - outline: none; -} - -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], button.hifi-edit-button { - font-family: Raleway-Bold; - font-size: 13px; - text-transform: uppercase; - vertical-align: top; - height: 28px; - min-width: 120px; - padding: 0 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, button.hifi-edit-button.glyph { - font-family: HiFi-Glyphs; - font-size: 20px; - text-transform: none; - min-width: 32px; - padding: 0; -} - -input[type=button].red, button.hifi-edit-button.red { - color: #fff; - background-color: #94132e; - background: linear-gradient(#d42043 20%, #94132e 100%); -} -input[type=button].blue, button.hifi-edit-button.blue { - color: #fff; - background-color: #1080b8; - background: linear-gradient(#00b4ef 20%, #1080b8 100%); -} -input[type=button].white, button.hifi-edit-button.white { - color: #121212; - background-color: #afafaf; - background: linear-gradient(#fff 20%, #afafaf 100%); -} - -input[type=button]:enabled:hover, button.hifi-edit-button:enabled:hover { - background: linear-gradient(#000, #000); - border: none; -} -input[type=button].red:enabled:hover, button.hifi-edit-button.red:enabled:hover { - background: linear-gradient(#d42043, #d42043); - border: none; -} -input[type=button].blue:enabled:hover, button.hifi-edit-button.blue:enabled:hover { - background: linear-gradient(#00b4ef, #00b4ef); - border: none; -} -input[type=button].white:enabled:hover, button.hifi-edit-button.white:enabled:hover { - background: linear-gradient(#fff, #fff); - border: none; -} - -input[type=button]:active, button.hifi-edit-button:active { - background: linear-gradient(#343434, #343434); -} -input[type=button].red:active, button.hifi-edit-button.red:active { - background: linear-gradient(#94132e, #94132e); -} -input[type=button].blue:active, button.hifi-edit-button.blue:active { - background: linear-gradient(#1080b8, #1080b8); -} -input[type=button].white:active, button.hifi-edit-button.white:active { - background: linear-gradient(#afafaf, #afafaf); -} - -input[type=button]:disabled, button.hifi-edit-button:disabled { - color: #252525; - background: linear-gradient(#575757 20%, #252525 100%); -} - -input[type=button][pressed=pressed], button.hifi-edit-button[pressed=pressed] { - color: #00b4ef; -} - -input[type=checkbox] { - display: none; -} -input[type=checkbox] + label { - padding-left: 24px; - background-repeat: no-repeat; - background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACpSURBVDhPY2xoaGD68+dPMSMjY9L////VgTQjAw4AlH8PxLOPHj1azWxjY1MBVNsBFBfBpwkEgNKcQGwtJyfHyATkF0KEiQdAzYlMQEIUyicFyDD9+/ePgRxMvsb///4zkIOZ/v0HmkAGHginYjGNGAzS+BpdkAj8mun/3//92DyPD//993cG88nTJ4+Zm5p/BSZeJYb/DEJADEzNOPF7hn8Mk69cvVIPAHN5pyfo70F5AAAAAElFTkSuQmCC); - cursor: pointer; -} -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=); -} -input.multi-diff[type=checkbox] + label { - background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFbSURBVDhPY2xoaGD68+dPMSMjY9L////VgTQjAw4AlH8PxLOPHj1azWxjY1MBVNsBFBfBpwkEgNKcQGwtJyfHyALkF4IE34gqM9zU9WT4wicG4mIA1l/fGIyOL2EQeP8EZEAiC5AQBUlcMQ5ieMXIwfDo9SeG73/+gRXDAAsTI4Pd9wdgTVAgw/Tv3z8GEP7Jwctw78M3DE0goPr6BoPludVgdTAM1wgCv//9B9PIQOPNDYaAGxtRNIEw03+gYhDGBtSBNgVc3wiWR8dM//4DTQBidKD++jqD//X1YDlsGMWpMKD26jqD79V1GM5DxihOZQWGntqrawy+V9ZiOA0dw21k/f6JwerzHQbvS2swTMeGGfPz8l8BLRP9KizDwP0WHk+EwGum/3//94M8y/nmEdZAwIb//vs7g/nk6ZPHzE3NvwITrxLDfwYhIAamZpz4PcM/hslXrl6pBwAmfz5iaAlAuAAAAABJRU5ErkJggg==); -} -input.multi-diff[type=checkbox] + label:hover { - background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFPSURBVDhPjZJBSwJBHMXfrG6rWEkl1MFDGOihDn2JIIrqc3QJunbyFhUkRieD+hYepWteuxctXiJ1Q5xmdmZ3bWZTUHezfvAu/3lv3n+HRblcTrbb7fN+v/8eBMFgFpxz13Gcu3q9bqHb7V4M5/9GhatE3cIsy0o99YBKC3jliCWbBK43gK0MoDI9otfTB/vPBC9Uwu4xMC8IzSOSBsFxIYNqMTGcAIYQAlodD3j5/IqENIc5gqt1P/SNZKhaXR0a5E/5BEcrwH1xEHrGZbiuC604DpZ81AoiPJ/WROM4e4sSt3kaaRopNrg7z1FZdSLmcU2saqrX20lTXC5/RFabFmk2m+GLnBnbWJMOThJv4SV/QRqNBjNNM9UiGeQHdDiejZSSG5TSG71zjnVivyVOKlNLlEqlx+xCds7zvU31G6Z938dvEq4QjLMH27ZPvwHFVYQr3h7uHwAAAABJRU5ErkJggg==); -} - -.rgb.fstuple .color-picker.multi-diff:after { - width: 20px; - height: 20px; - content: ' '; - background: darkgray; - display: flex; - clip-path: polygon(0 0, 0 100%, 100% 100%); -} - -.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; -} - -.icon { - font-family: HiFi-Glyphs; - color: white; -} - -#property-type-icon { - font-size: 50px; -} - -.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; -} - -#properties-list { - display: flex; - flex-direction: column; - - margin-top: 16px; -} - -#properties-list .fieldset { - position: relative; - /* 0.1px on the top is to prevent margin collapsing between this and it's first child */ - margin: 0 -21px 21px -21px; - padding: 0.1px 21px 0 21px; - border: none; - border-top: 1px rgb(90,90,90) solid; - box-shadow: 0 -1px 0 rgb(37,37,37); -} - -#properties-list .fieldset.fstuple, #properties-list .fieldset.fsrow { - margin-top: 21px; - border: none; - box-shadow: none; -} - -#properties-list > .fieldset[data-collapsed="true"] + .fieldset { - margin-top: 0; -} - -#properties-list > .fieldset[data-collapsed="true"] > *:not(div.legend) { - display: none !important; -} - -.section-header { - padding: 0 16px; - border-top: 1px rgb(90,90,90) solid; - box-shadow: 1px -1px 0 rgb(37,37,37); - border-bottom: 1px solid rgb(37, 37, 37); -} - -div.section-header, hr { - display: flex; - flex-flow: row nowrap; - padding: 10px 16px; - font-family: Raleway-Regular; - font-size: 12px; - color: #afafaf; - height: 28px; - text-transform: uppercase; - outline: none; - margin-bottom: 10px; - align-items: center; -} - -.section.minor { - margin: 0 21px; - box-shadow: 1px -1px 0 rgb(37,37,37); - border-left: 1px solid #575757; -} - -.container.property { - padding: 0 16px; -} - -.stretch { - width: 100%; -} - -div.section-header .label { - width: 100%; -} - -.section.minor div.section-header { - border-right: 0; -} - -div.section[collapsed="true"] > .container { - display: none; -} - -div.section[collapsed="true"], div.section[collapsed="true"] > .section-header { - margin-bottom: 0; -} - -.section.major { - margin-bottom: 20px; -} - -.section.minor.last { - margin-bottom: 20px; - border-bottom: 1px solid rgb(37,37,37); -} - -.section-header { - background-color: #373737; -} - - -.section-header span { - font-size: 30px; - font-family: HiFi-Glyphs; -} - -.triple-label { - text-transform: uppercase; - text-align: center; - padding: 6px 0; - cursor: default; -} - -.triple-item { - margin-right: 10px; -} - -.triple-item.rgb.fstuple { - display: block !important; -} - -.section-header[collapsed="true"] { - margin-bottom: -21px; -} - -#properties-list .sub-section-header { - border-top: none; - box-shadow: none; - margin-top: 8px; -} - -.sub-section-header + .property { - margin-top: 0; -} - -hr { - border: none; - padding-top: 2px; -} - -.property { - min-height: 28px; -} - -.property.checkbox { - width: auto; -} - -span.indented { - padding-left: 16px; -} - -.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; -} - -.property div.legend, .number div.legend { - display: table-cell; - vertical-align: middle; - font-family: Raleway-SemiBold; - font-size: 14px; -} -.property div.legend .unit, .number div.legend .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; -} -.value div.legend { - display: inline-block; - vertical-align: top; - width: 48px; -} -.value span { - font-size: 15px; - margin-right: 4px; -} - -#placeholder-property-type { - display: flex; - align-items: center; - width: auto; - margin-right: 20px; -} - -#placeholder-property-locked { - margin-left: 6px; -} - -.checkbox + .checkbox { - margin-top: 0; -} - -.checkbox-sub-props { - margin-top: 18px; -} - -.property .number { - float: left; -} -.property .number + .number { - margin-left: 10px; -} - -.property.range label{ - padding-bottom: 3px; -} -.property.range input[type=number]{ - margin-left: 0.8rem; - width: 5.4rem; - height: 1.8rem; -} - -.dropdown { - position: relative; - margin-bottom: -17px; -} - -.dropdown select { - clear: both; -} - -.dropdown dl { - clear: both; - cursor: pointer; - font-family: FiraSans-SemiBold; - font-size: 15px; - width: 292px; - height: 28px; - padding: 0 28px 0 12px; - color: #afafaf; - background: #575757; - position: relative; - display: flex; - align-items: center; -} - -.dropdown dl[dropped="true"] { - color: #404040; - background: linear-gradient(#afafaf, #afafaf); - z-index: 998; -} - -.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; - z-index: 999; -} -.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; -} - -.multiselect-box { - position: absolute; -} -.multiselect-box select { - font-family: FiraSans-SemiBold; - font-size: 15px; - color: #afafaf; - background-color: #252525; - border: none; - text-align-last: center; -} -.over-select { - position: absolute; - left: 0; - right: 0; - top: 0; - bottom: 0; -} -.multiselect-options { - position: absolute; - display: none; - border: none; -} -.multiselect-options span { - font-family: hifi-glyphs; - font-size: 13px; - color: #000000; -} -.multiselect-options label { - z-index: 2; - display: block; - font-family: FiraSans-SemiBold; - font-size: 11px; - color: #000000; - background-color: #afafaf; -} -.multiselect-options label:hover { - background-color: #1e90ff; -} -.multiselect-options input[type=checkbox] + label { - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH4goSADUOYnF4LQAAABl0RVh0Q29tbWVudABDcmVhdGVkIHdpdGggR0lNUFeBDhcAAAIMSURBVFjD7ZmxkqowFIZ/7mwJPen1AezV3t6hFvrQhweAHvrQ8wL2xt4HwD7ppd+tvHOvu0gCYdEZTsmAfpNzzpcTcAB84o3iD94sZuCx4+Pxwvl8dl4JcL1ef84lMQPPwBZDSgkp5XsASylBKUUYhhBCvDbw7XYDpRRKKTRNA8YYOOevC5ymKZRS/13jnHdCTwLMOW8tAc45GGNomuY1gKuq6lxFIQQopdMDXy4X5HmudW8URdMCSynBGNOG3Ww20wHf9dVWl4+wbav7a8CMsW9G+Cm22+1T2F8BzvMc1+u18z5CCJIkseNhKSX2+z2qqjLWl84zhBAURQHXde0A31Oa57nWbqSrLwDwPA9FUcD3fTtb82NKu8QOAHVda+srSRJt2E7gtpQKIXA4HH6csmzpyxj4dDo9TalSCpRS1HX9TV86RujSlxGwlBJpmnY+rJRCGIZ/s2BTX9qnZgBwHAee52mJ/l7nx+PRqr6MVtj3fZRlaVRf/5aGDX0Z17DrusiyrHfqhuqrt9aiKEIcx4OBTfU1aOMIggBlWYIQ0utP+uhr8CyxXC5RFIUxdBAE1srKePgxbcbVamWlnAZNa7rNSAhBlmWv8yLlWTPa0Nco83BbM2ZZZsUIowzwj80YxzEWi8VoB4IPGz9yb0YhBHa73agnGGtHJNd1R4ed9FVV33Awf6ebgd8b+Av9A/rq6s3hjgAAAABJRU5ErkJggg=='); - background-size: 11px 11px; - background-position: top 5px left 14px; -} -.multiselect-options input[type=checkbox]:enabled + label:hover { - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH4goSADUOYnF4LQAAABl0RVh0Q29tbWVudABDcmVhdGVkIHdpdGggR0lNUFeBDhcAAAIMSURBVFjD7ZmxkqowFIZ/7mwJPen1AezV3t6hFvrQhweAHvrQ8wL2xt4HwD7ppd+tvHOvu0gCYdEZTsmAfpNzzpcTcAB84o3iD94sZuCx4+Pxwvl8dl4JcL1ef84lMQPPwBZDSgkp5XsASylBKUUYhhBCvDbw7XYDpRRKKTRNA8YYOOevC5ymKZRS/13jnHdCTwLMOW8tAc45GGNomuY1gKuq6lxFIQQopdMDXy4X5HmudW8URdMCSynBGNOG3Ww20wHf9dVWl4+wbav7a8CMsW9G+Cm22+1T2F8BzvMc1+u18z5CCJIkseNhKSX2+z2qqjLWl84zhBAURQHXde0A31Oa57nWbqSrLwDwPA9FUcD3fTtb82NKu8QOAHVda+srSRJt2E7gtpQKIXA4HH6csmzpyxj4dDo9TalSCpRS1HX9TV86RujSlxGwlBJpmnY+rJRCGIZ/s2BTX9qnZgBwHAee52mJ/l7nx+PRqr6MVtj3fZRlaVRf/5aGDX0Z17DrusiyrHfqhuqrt9aiKEIcx4OBTfU1aOMIggBlWYIQ0utP+uhr8CyxXC5RFIUxdBAE1srKePgxbcbVamWlnAZNa7rNSAhBlmWv8yLlWTPa0Nco83BbM2ZZZsUIowzwj80YxzEWi8VoB4IPGz9yb0YhBHa73agnGGtHJNd1R4ed9FVV33Awf6ebgd8b+Av9A/rq6s3hjgAAAABJRU5ErkJggg=='); -} -.multiselect-options input[type=checkbox]:checked + label { - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH4goSADMveELP9QAAABl0RVh0Q29tbWVudABDcmVhdGVkIHdpdGggR0lNUFeBDhcAAAIqSURBVFjD7ZmxkqowFIb/7GwJPfT6APZib+9QC33o4QGghz70vIC9sfcBsE966bPNWlxnlQTDRWc4JUT4hpPz5SQSAAofFF/4sJiBx47v+wun04m8E+B6vVbzlJiBZ2CLIYRQQgj1EcBCCEUpRRRF4Jyrtwa+Xq+glEJKia7rkKYpGGPqbYHzPFdSyn+uMcZ6oScBZowpzvmje0jTVHVd9x7ATdMoxtjTMZxzUErV5MDn81mVZak1No7jab+wEEKlaaoNGwQBmQz4pq9H8/IeNo5jMmnRpWmKeyP8FZvN5insfwEuy1JdLpfecb7vI8uy3tb2Szelu91ONU1jtP9jjKmmabRgq6qC4zh2VrpbSsuy1FqNdPUFAK7roqoqeJ6ntXH4Mk1pn9gBoG1bbX1lWaYN2wv8KKWcc+z3+z+7LFv6MgY+Ho9PUyqlBKUUbduqe33pGKFPX0bAQgiV53nvj6WUiKIIt2K0qS/tXTMAEELguq6W6H/nOQ6Hg1V9GX1hz/NIXdckCALtB7Vta1VfxnPYcRwURUEeNSGmYaqvwVqL45gkSfIysKm+Xlo4wjAkdV3D9/1BLxmir5d7ieVySaqqMoYOw3CwEV5ufkyLcbVaIUkSq2d1xt2abjH6vo+iKKwfLA5uL58Vow19jdIPPyrGoiisGGGUBv6+GJMkwWKxGO2M+dvGQ36LEZxztd1uRz0Qt7ZFchwHY8NOelQ1NAjm/+lm4M8G/gH2zx33BSr7jAAAAABJRU5ErkJggg=='); -} -.multiselect-options input[type=checkbox]:checked + label:hover { - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH4goSADMveELP9QAAABl0RVh0Q29tbWVudABDcmVhdGVkIHdpdGggR0lNUFeBDhcAAAIqSURBVFjD7ZmxkqowFIb/7GwJPfT6APZib+9QC33o4QGghz70vIC9sfcBsE966bPNWlxnlQTDRWc4JUT4hpPz5SQSAAofFF/4sJiBx47v+wun04m8E+B6vVbzlJiBZ2CLIYRQQgj1EcBCCEUpRRRF4Jyrtwa+Xq+glEJKia7rkKYpGGPqbYHzPFdSyn+uMcZ6oScBZowpzvmje0jTVHVd9x7ATdMoxtjTMZxzUErV5MDn81mVZak1No7jab+wEEKlaaoNGwQBmQz4pq9H8/IeNo5jMmnRpWmKeyP8FZvN5insfwEuy1JdLpfecb7vI8uy3tb2Szelu91ONU1jtP9jjKmmabRgq6qC4zh2VrpbSsuy1FqNdPUFAK7roqoqeJ6ntXH4Mk1pn9gBoG1bbX1lWaYN2wv8KKWcc+z3+z+7LFv6MgY+Ho9PUyqlBKUUbduqe33pGKFPX0bAQgiV53nvj6WUiKIIt2K0qS/tXTMAEELguq6W6H/nOQ6Hg1V9GX1hz/NIXdckCALtB7Vta1VfxnPYcRwURUEeNSGmYaqvwVqL45gkSfIysKm+Xlo4wjAkdV3D9/1BLxmir5d7ieVySaqqMoYOw3CwEV5ufkyLcbVaIUkSq2d1xt2abjH6vo+iKKwfLA5uL58Vow19jdIPPyrGoiisGGGUBv6+GJMkwWKxGO2M+dvGQ36LEZxztd1uRz0Qt7ZFchwHY8NOelQ1NAjm/+lm4M8G/gH2zx33BSr7jAAAAABJRU5ErkJggg=='); -} - -.dynamic-multiselect { - position: relative; - top: 6px; - padding-bottom: 6px; -} - -div.refresh { - box-sizing: border-box; - padding-right: 44px; -} -div.refresh input[type="button"] { - float: right; - margin-right: -44px; - position: relative; - left: 10px; -} - -.color-picker { - box-sizing: border-box; - width: 26px; - height: 26px; - border: 3px solid #2B2B2B; - cursor: pointer; -} -.color-picker:focus { - outline: none; -} -.color-picker[active="true"] { - border-color: #000; -} - -.color-picker[disabled="disabled"] { - border-color: #afafaf; -} - -.colpick { - z-index: 3; -} -.colpick[disabled="disabled"] { - display: none !important; -} - -.rgb label { - float: left; - margin-top: 10px; - margin-left: 21px; -} -.rgb label + * { - clear: both; -} - -.rgb div.legend { - float: left; - margin-top: 10px; - margin-left: 21px; -} -.rgb div.legend + * { - clear: both; -} - -.draggable-number-container { - flex: 0 1 124px; -} -.draggable-number { - position: relative; - height: 28px; - flex: 0 1 124px; - display: flex; - align-items: center; -} - -.draggable-number .text { - position: absolute; - display: inline-block; - color: #afafaf; - background-color: #252525; - font-family: FiraSans-SemiBold; - font-size: 15px; - margin: 0; - padding: 0 16px; - height: 28px; - width: 100%; - line-height: 2; - box-sizing: border-box; - z-index: 1; -} -.draggable-number .text:hover { - cursor: ew-resize; -} -.draggable-number .left-arrow, .draggable-number .right-arrow { - position: absolute; - display: inline-block; - font-family: HiFi-Glyphs; - font-size: 20px; - z-index: 2; -} -.draggable-number span:hover { - cursor: default; -} -.draggable-number .left-arrow { - top: 3px; - left: 0; - transform: rotate(180deg); -} -.draggable-number .right-arrow { - top: 3px; - right: 0; -} -.draggable-number input[type=number] { - position: absolute; - right: 0; - width: 100%; -} -.draggable-number input[type=button] { - position: absolute; - top: 0; -} -.draggable-number input::-webkit-inner-spin-button { - -webkit-appearance: none; - visibility: hidden; -} -.draggable-number.fstuple { - height: 28px; - width: 124px; - left: 12px; -} -.draggable-number.fstuple + .draggable-number.fstuple { - margin-left: 28px; -} -.draggable-number.fstuple input { - right: -10px; -} -.draggable-number.fstuple .sublabel { - position: absolute; - top: 6px; - left: -16px; - font-family: FiraSans-SemiBold; - font-size: 15px; -} - -.rect .rect-row { - margin-bottom: 8px; -} - -.row .property { - width: auto; - display: inline-block; - margin-right: 6px; -} -.row .property:last-child { - margin-right: 0; -} -.row .property input { - clear: both; - float: left; -} - -.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,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'); -} -.texture-image.no-preview { - background-image: url('data:image/png;base64,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'); -} - -.two-column { - display: table; - width: 100%; -} -.two-column > div { - display: table-cell; - width: 50%; -} - -#properties-list .fieldset .two-column { - padding-top: 10px; - display: flex; -} - -#properties-list .two-column .fieldset { - width: 50%; - margin: 0; - padding: 0; - border-top: none; - box-shadow: none; -} - -#properties-list .two-column .column { - position: relative; - top: -10px; -} - -#properties-list .two-column .fieldset div.legend { - width: 100%; - margin: 21px -21px 0 -21px; - padding: 16px 0 0 21px; - font-family: Raleway-Regular; - font-size: 12px; - color: #afafaf; - height: 10px; - text-transform: uppercase; - outline: none; -} - -#properties-list .two-column + .property { - margin-top: 6px; -} - -.fieldset .checkbox-sub-props { - margin-top: 0; -} - -.fieldset .checkbox-sub-props .property:first-child { - margin-top: 0; -} - -.column { - vertical-align: top; -} - -.indent { - margin-left: 24px; -} - -::-webkit-scrollbar { - width: 20px; - height: 10px; -} -::-webkit-scrollbar-track { - background-color: #2e2e2e; -} -#entity-table-scroll::-webkit-scrollbar-track { - border-bottom-right-radius: 7px; -} - -::-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; -} - - -div#grid-section, body#entity-list-body { - padding-bottom: 0; - margin: 16px; -} - -#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; -} - -#entity-list { - position: relative; /* New positioning context. */ -} - -#filter-area { - padding-right: 168px; - padding-bottom: 24px; -} - -#filter-type-multiselect-box select { - border-radius: 14.5px; - width: 107px; - height: 28px; -} -#filter-type-options { - position: absolute; - top: 48px; -} -#filter-type-options div { - position: relative; - height: 22px; -} -#filter-type-options span { - position: relative; - top: 3px; - font-family: HiFi-Glyphs; - font-size: 13px; - color: #000000; - padding-left: 6px; - padding-right: 4px; -} -#filter-type-options label { - position: absolute; - top: -20px; - z-index: 2; - height: 22px; - width: 200px; - padding-top: 1px; -} -#filter-type-options-buttons { - top: -22px; - width: 224px; - z-index: 2; - background-color: #afafaf; - padding-bottom: 6px; -} -#filter-type-options input[type=button] { - position: relative; - left: 16px; - z-index: 3; - height: 23px; - min-width: 60px; - font-size: 10px; - color: #000; - background: linear-gradient(#afafaf 20%, #808080 100%); -} -#filter-type-options input[type=button]:enabled:hover { - background: linear-gradient(#afafaf 20%, #575757 100%); -} - -#filter-search-and-icon { - position: relative; - left: 118px; - width: calc(100% - 126px); -} - -#filter-in-view { - position: absolute; - top: 0; - right: 126px; -} - -#filter-radius-and-unit { - position: relative; - float: right; - margin-right: -168px; - top: -45px; -} -#filter-radius-and-unit label { - margin-left: 2px; -} -#filter-radius-and-unit span { - position: relative; - top: 25px; - right: 9px; - z-index: 2; - font-style: italic; -} -#filter-radius-and-unit input { - width: 120px; - border-radius: 14.5px; - font-style: italic; -} -#filter-radius-and-unit input[type=number]::-webkit-inner-spin-button { - display: none; -} - -#entity-list-footer { - padding-top: 9px; -} - -#footer-text { - float: right; - padding-top: 12px; - padding-right: 22px; -} - -input[type=button]#export { - height: 38px; - width: 180px; -} - -#no-entities { - display: none; - position: absolute; - top: 80px; - padding: 12px; - font-family: FiraSans-SemiBold; - font-size: 15px; - font-style: italic; - color: #afafaf; -} - -#entity-table-columns-multiselect { - position: absolute; - top: 51px; - right: 22px; -} -#entity-table-columns-multiselect-box select { - height: 28px; - width: 20px; - background-color: #1c1c1c; - border-top-right-radius: 7px; -} -#entity-table-columns-options { - position: absolute; - top: 50px; - right: 110px; -} -#entity-table-columns-options div { - position: relative; - height: 22px; -} -#entity-table-columns-options label { - position: absolute; - top: -22px; - height: 22px; - width: 100px; - padding-top: 4px; -} -#entity-table-columns-options input[type=checkbox] + label { - padding-left: 30px; -} - -#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; - border-bottom: 2px solid #575757; - border-bottom-left-radius: 7px; - border-bottom-right-radius: 7px; - 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 { - 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; -} - -#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 thead .sort-order { - display: inline-block; - width: 8px; - margin: -5px 0 -3px 0; - vertical-align: middle; -} - -#entity-table thead .resizer { - position: absolute; - top: 1px; - height: 26px; - width: 10px; - cursor: col-resize; -} - -#entity-table .dragging { - background-color: #b3ecff; -} - -#entity-table td { - box-sizing: border-box; -} -#entity-table td.glyph { - text-align: center; - padding: 0; -} - -#properties-base { - border-top: none !important; - box-shadow: none !important; - margin-bottom: 5px !important; -} - -#properties-base #property-type-icon { - font-family: HiFi-Glyphs; - font-size: 31px; - color: #00b4ef; - margin: -4px 12px -4px -2px; - width: auto; - display: none; -} - -#properties-base #property-type { - padding: 5px 24px 5px 0; - border-right: 1px solid #808080; - width: auto; - display: inline-block; -} - -#properties-base .checkbox label span { - font-family: HiFi-Glyphs; - font-size: 20px; - padding-right: 6px; - vertical-align: top; - position: relative; - top: -4px; -} - -#properties-base input[type=checkbox]:checked + label span { - color: #ffffff; -} - -#id label { - width: 24px; -} -#property-id { - display: inline-block; -} -#property-id::selection { - color: #000000; - background-color: #00b4ef; -} - -input#property-scale-button-rescale { - min-width: 50px; - left: 152px; -} -input#property-scale-button-reset { - margin-right: 0; - left: 250px; -} - -#property-userData-static, -#property-materialData-static { - display: none; - z-index: 99; - position: absolute; - width: 96%; - padding-left: 1%; - margin-top: 5px; - margin-bottom: 10px; - background-color: #2e2e2e; -} - -#property-userData-saved, -#property-materialData-saved { - margin-top: 5px; - font-size: 16px; - display: none; -} - - -#div-property-collisionSoundURL[style*="display: none"] + .property { - margin-top: 0; -} - -.context-menu { - display: none; - position: fixed; - color: #000000; - background-color: #afafaf; - padding: 5px 0 5px 0; - cursor: default; -} -.context-menu li { - list-style-type: none; - padding: 4px 18px 4px 18px; - margin: 0; - white-space: nowrap; -} -.context-menu li:hover { - background-color: #e3e3e3; -} -.context-menu li.separator { - border-top: 1px solid #333333; - margin: 5px 5px; - padding: 0 0; -} -.context-menu li.disabled { - color: #333333; -} -.context-menu li.separator:hover, .context-menu li.disabled:hover { - background-color: #afafaf; -} - -input.rename-entity { - height: 100%; - width: 100%; - border: none; - font-family: FiraSans-SemiBold; - font-size: 15px; - /* need this to show the text cursor when the input field is empty */ - padding-left: 2px; -} - -.create-app-tooltip { - z-index: 100; - position: absolute; - background: #6a6a6a; - border: 1px solid black; - width: 258px; - min-height: 20px; - padding: 5px; - z-index: 100; -} - -.create-app-tooltip .create-app-tooltip-description { - font-size: 12px; - font-style: italic; - color: #ffffff; -} - -.create-app-tooltip .create-app-tooltip-js-attribute { - font-family: Raleway-SemiBold; - font-size: 11px; - color: #000000; - bottom: 0; - margin-top: 5px; -} - -#toggle-space-mode::before { - font-family: HiFi-Glyphs; - font-size: 20px; - text-transform: none; - min-width: 32px; - padding-right: 4px; - vertical-align: middle; -} - -#toggle-space-mode.space-mode-local::before { - content: "m"; -} - -#toggle-space-mode.space-mode-world::before { - content: "\e02c"; -} - -.container { - display: flex; - flex-flow: row nowrap; - margin-bottom: 8px; - min-height: 28px; -} - -.container > label { - margin-top: 6px; - width: 160px; - min-width: 160px; - max-width: 160px; -} - -.container > div.checkbox { - padding-top: 6px; -} - -.container > .value { - width: 100%; -} - -.container .row { - display: flex; - flex-flow: row nowrap; -} - -.container.shrink { - width: min-content; -} - -.fstuple { - display: flex; - flex-flow: row; -} -.fstuple input { - margin-left: 4px; - margin-right: 10px; -} -.fstuple label.red, .fstuple label.x, .fstuple label.w { - color: #C62147; -} -.fstuple label.green, .fstuple label.y, .fstuple label.h { - color: #359D85; -} -.fstuple label.blue, .fstuple label.z { - color: #0093C5; -} - -.xyz.fstuple, .pyr.fstuple { - position: relative; - left: -12px; - min-width: 50px; - width: 100px; -} - -.rgb.fstuple .tuple { - display: none; -} - -input.number-slider { - background: #575757; - border-radius: 4px; - color: white; -} - -.fstuple > div { - display: flex; - align-items: center; - justify-content: left; -} - -.flex-row { - display: flex; - flex-flow: row; -} - -.flex-column { - display: flex; - flex-flow: column; -} - -.flex-center { - align-items: center; -} - -.flex-evenly-spaced { - flex: 1; -} - -#property-serverScripts-status { - font-family: Raleway-Light; - font-size: 14px; - margin: 6px 0; - cursor: default; -} - -#property-name, #property-id { - display: flex; - width: 100%; -} - -.spacemode-hidden { - display: none; -} - -#placeholder-property-type { - min-width: 0; -} - -.collapse-icon { - cursor: pointer; -} - -#property-userData-editor.error { - border: 2px solid red; -} - -#property-userData-editorStatus { - color: white; - background-color: red; - padding: 5px; - display: none; - cursor: pointer; -} - -#property-materialData-editor.error { - border: 2px solid red; -} - -#property-materialData-editorStatus { - color: white; - background-color: red; - padding: 5px; - display: none; - cursor: pointer; -} - -input[type=number].hide-spinner::-webkit-inner-spin-button { - -webkit-appearance: none; - visibility: hidden; -} - -div.jsoneditor-menu a.jsoneditor-poweredBy { - display: none; -} +/* +// edit-style.css +// +// Created by Ryan Huffman on 13 Nov 2014 +// Copyright 2014 High Fidelity, Inc. +// Copyright 2020 Vircadia contributors. +// +// 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 { + + color: #afafaf; + background-color: #404040; + font-family: Raleway-Regular; + font-size: 12px; + + -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 0; + border-bottom: 1px solid #575757; + width: 100%; +} + +tbody { + width: 100%; + display: block; +} + +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: clip; + white-space: nowrap; + word-wrap: nowrap; + padding-left: 12px; + padding-right: 12px; +} + +td.hidden { + padding-left: 0; + padding-right: 0; +} + +td.url { + white-space: nowrap; + overflow: hidden; +} + + +input[type="text"], input[type="search"], 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, button: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 0 1px #00b4ef; +} + +input:disabled, textarea:disabled, .draggable-number.text[disabled="disabled"] { + background-color: #383838; + color: #afafaf; +} + +input[type="text"] { + height: 28px; + width: 100%; +} + +input.multi-diff:not(:focus) + span.multi-diff, +textarea.multi-diff:not(:focus) + span.multi-diff, +.draggable-number.multi-diff>input:not(:focus)+span.multi-diff, +dl>dt.multi-diff:not(:focus) + span.multi-diff { + visibility: visible; + position: absolute; + display: inline-block; + z-index: 2; + top: 7.5px; + left: 20px; + max-width: 50px; + min-width: 10px; + width: 50%; + height: 13px; + background-image: linear-gradient(transparent 0%, transparent 10%, #afafaf 10%, #afafaf 20%, transparent 20%, transparent 45%, #afafaf 45%, #afafaf 55%, transparent 55%, transparent 80%, #afafaf 80%, #afafaf 90%, transparent 90%, transparent 100%); + background-repeat: no-repeat; + pointer-events: none; +} + +input.multi-diff:not(:focus)::-webkit-input-placeholder, input.multi-diff:not(:focus) { + color: transparent; +} + +.draggable-number.multi-diff .text { + color: transparent; +} + +.dropdown > span.multi-diff { + top: 5px; + left: 10px; +} + +.text, .url, .texture, .textarea { + position: relative; +} + +input[type="search"] { + height: 28px; + width: 100%; +} +input[type="search"]::-webkit-search-cancel-button { + -webkit-appearance: none; + height: 20px; + width: 20px; + background-image: url('data:image/png;base64,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') +} + +input[type="number"] { + position: relative; + height: 28px; + width: 124px; +} +input[type=number] { + padding-right: 3px; +} +input[type=number]::-webkit-inner-spin-button { + opacity: 1.0; + display: block; + position: relative; + width: 10px; + height: 90%; + overflow: hidden; + font-family: HiFi-Glyphs; + font-size: 32px; + 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[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]::-webkit-slider-thumb:hover { + background-color: white; +} +input[type=range]:focus { + outline: none; +} + +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], button.hifi-edit-button { + font-family: Raleway-Bold; + font-size: 13px; + text-transform: uppercase; + vertical-align: top; + height: 28px; + min-width: 120px; + padding: 0 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, button.hifi-edit-button.glyph { + font-family: HiFi-Glyphs; + font-size: 20px; + text-transform: none; + min-width: 32px; + padding: 0; +} + +input[type=button].red, button.hifi-edit-button.red { + color: #fff; + background-color: #94132e; + background: linear-gradient(#d42043 20%, #94132e 100%); +} +input[type=button].blue, button.hifi-edit-button.blue { + color: #fff; + background-color: #1080b8; + background: linear-gradient(#00b4ef 20%, #1080b8 100%); +} +input[type=button].white, button.hifi-edit-button.white { + color: #121212; + background-color: #afafaf; + background: linear-gradient(#fff 20%, #afafaf 100%); +} + +input[type=button]:enabled:hover, button.hifi-edit-button:enabled:hover { + background: linear-gradient(#000, #000); + border: none; +} +input[type=button].red:enabled:hover, button.hifi-edit-button.red:enabled:hover { + background: linear-gradient(#d42043, #d42043); + border: none; +} +input[type=button].blue:enabled:hover, button.hifi-edit-button.blue:enabled:hover { + background: linear-gradient(#00b4ef, #00b4ef); + border: none; +} +input[type=button].white:enabled:hover, button.hifi-edit-button.white:enabled:hover { + background: linear-gradient(#fff, #fff); + border: none; +} + +input[type=button]:active, button.hifi-edit-button:active { + background: linear-gradient(#343434, #343434); +} +input[type=button].red:active, button.hifi-edit-button.red:active { + background: linear-gradient(#94132e, #94132e); +} +input[type=button].blue:active, button.hifi-edit-button.blue:active { + background: linear-gradient(#1080b8, #1080b8); +} +input[type=button].white:active, button.hifi-edit-button.white:active { + background: linear-gradient(#afafaf, #afafaf); +} + +input[type=button]:disabled, button.hifi-edit-button:disabled { + color: #252525; + background: linear-gradient(#575757 20%, #252525 100%); +} + +input[type=button][pressed=pressed], button.hifi-edit-button[pressed=pressed] { + color: #00b4ef; +} + +input[type=checkbox] { + display: none; +} +input[type=checkbox] + label { + padding-left: 24px; + background-repeat: no-repeat; + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACpSURBVDhPY2xoaGD68+dPMSMjY9L////VgTQjAw4AlH8PxLOPHj1azWxjY1MBVNsBFBfBpwkEgNKcQGwtJyfHyATkF0KEiQdAzYlMQEIUyicFyDD9+/ePgRxMvsb///4zkIOZ/v0HmkAGHginYjGNGAzS+BpdkAj8mun/3//92DyPD//993cG88nTJ4+Zm5p/BSZeJYb/DEJADEzNOPF7hn8Mk69cvVIPAHN5pyfo70F5AAAAAElFTkSuQmCC); + cursor: pointer; +} +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=); +} +input.multi-diff[type=checkbox] + label { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFbSURBVDhPY2xoaGD68+dPMSMjY9L////VgTQjAw4AlH8PxLOPHj1azWxjY1MBVNsBFBfBpwkEgNKcQGwtJyfHyALkF4IE34gqM9zU9WT4wicG4mIA1l/fGIyOL2EQeP8EZEAiC5AQBUlcMQ5ieMXIwfDo9SeG73/+gRXDAAsTI4Pd9wdgTVAgw/Tv3z8GEP7Jwctw78M3DE0goPr6BoPludVgdTAM1wgCv//9B9PIQOPNDYaAGxtRNIEw03+gYhDGBtSBNgVc3wiWR8dM//4DTQBidKD++jqD//X1YDlsGMWpMKD26jqD79V1GM5DxihOZQWGntqrawy+V9ZiOA0dw21k/f6JwerzHQbvS2swTMeGGfPz8l8BLRP9KizDwP0WHk+EwGum/3//94M8y/nmEdZAwIb//vs7g/nk6ZPHzE3NvwITrxLDfwYhIAamZpz4PcM/hslXrl6pBwAmfz5iaAlAuAAAAABJRU5ErkJggg==); +} +input.multi-diff[type=checkbox] + label:hover { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFPSURBVDhPjZJBSwJBHMXfrG6rWEkl1MFDGOihDn2JIIrqc3QJunbyFhUkRieD+hYepWteuxctXiJ1Q5xmdmZ3bWZTUHezfvAu/3lv3n+HRblcTrbb7fN+v/8eBMFgFpxz13Gcu3q9bqHb7V4M5/9GhatE3cIsy0o99YBKC3jliCWbBK43gK0MoDI9otfTB/vPBC9Uwu4xMC8IzSOSBsFxIYNqMTGcAIYQAlodD3j5/IqENIc5gqt1P/SNZKhaXR0a5E/5BEcrwH1xEHrGZbiuC604DpZ81AoiPJ/WROM4e4sSt3kaaRopNrg7z1FZdSLmcU2saqrX20lTXC5/RFabFmk2m+GLnBnbWJMOThJv4SV/QRqNBjNNM9UiGeQHdDiejZSSG5TSG71zjnVivyVOKlNLlEqlx+xCds7zvU31G6Z938dvEq4QjLMH27ZPvwHFVYQr3h7uHwAAAABJRU5ErkJggg==); +} + +.rgb.fstuple .color-picker.multi-diff:after { + width: 20px; + height: 20px; + content: ' '; + background: darkgray; + display: flex; + clip-path: polygon(0 0, 0 100%, 100% 100%); +} + +.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; +} + +.icon { + font-family: HiFi-Glyphs; + color: white; +} + +#property-type-icon { + font-size: 50px; +} + +.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; +} + +#properties-list { + display: flex; + flex-direction: column; + + margin-top: 16px; +} + +#properties-list .fieldset { + position: relative; + /* 0.1px on the top is to prevent margin collapsing between this and it's first child */ + margin: 0 -21px 21px -21px; + padding: 0.1px 21px 0 21px; + border: none; + border-top: 1px rgb(90,90,90) solid; + box-shadow: 0 -1px 0 rgb(37,37,37); +} + +#properties-list .fieldset.fstuple, #properties-list .fieldset.fsrow { + margin-top: 21px; + border: none; + box-shadow: none; +} + +#properties-list > .fieldset[data-collapsed="true"] + .fieldset { + margin-top: 0; +} + +#properties-list > .fieldset[data-collapsed="true"] > *:not(div.legend) { + display: none !important; +} + +.section-header { + padding: 0 16px; + border-top: 1px rgb(90,90,90) solid; + box-shadow: 1px -1px 0 rgb(37,37,37); + border-bottom: 1px solid rgb(37, 37, 37); +} + +div.section-header, hr { + display: flex; + flex-flow: row nowrap; + padding: 10px 16px; + font-family: Raleway-Regular; + font-size: 12px; + color: #afafaf; + height: 28px; + text-transform: uppercase; + outline: none; + margin-bottom: 10px; + align-items: center; +} + +.section.minor { + margin: 0 21px; + box-shadow: 1px -1px 0 rgb(37,37,37); + border-left: 1px solid #575757; +} + +.container.property { + padding: 0 16px; +} + +.stretch { + width: 100%; +} + +div.section-header .label { + width: 100%; +} + +.section.minor div.section-header { + border-right: 0; +} + +div.section[collapsed="true"] > .container { + display: none; +} + +div.section[collapsed="true"], div.section[collapsed="true"] > .section-header { + margin-bottom: 0; +} + +.section.major { + margin-bottom: 20px; +} + +.section.minor.last { + margin-bottom: 20px; + border-bottom: 1px solid rgb(37,37,37); +} + +.section-header { + background-color: #373737; +} + + +.section-header span { + font-size: 30px; + font-family: HiFi-Glyphs; +} + +.triple-label { + text-transform: uppercase; + text-align: center; + padding: 6px 0; + cursor: default; +} + +.triple-item { + margin-right: 10px; +} + +.triple-item.rgb.fstuple { + display: block !important; +} + +.section-header[collapsed="true"] { + margin-bottom: -21px; +} + +#properties-list .sub-section-header { + border-top: none; + box-shadow: none; + margin-top: 8px; +} + +.sub-section-header + .property { + margin-top: 0; +} + +hr { + border: none; + padding-top: 2px; +} + +.property { + min-height: 28px; +} + +.property.checkbox { + width: auto; +} + +span.indented { + padding-left: 16px; +} + +.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; +} + +.property div.legend, .number div.legend { + display: table-cell; + vertical-align: middle; + font-family: Raleway-SemiBold; + font-size: 14px; +} +.property div.legend .unit, .number div.legend .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; +} +.value div.legend { + display: inline-block; + vertical-align: top; + width: 48px; +} +.value span { + font-size: 15px; + margin-right: 4px; +} + +#placeholder-property-type { + display: flex; + align-items: center; + width: auto; + margin-right: 20px; +} + +#placeholder-property-locked { + margin-left: 6px; +} + +.checkbox + .checkbox { + margin-top: 0; +} + +.checkbox-sub-props { + margin-top: 18px; +} + +.property .number { + float: left; +} +.property .number + .number { + margin-left: 10px; +} + +.property.range label{ + padding-bottom: 3px; +} +.property.range input[type=number]{ + margin-left: 0.8rem; + width: 5.4rem; + height: 1.8rem; +} + +.dropdown { + position: relative; + margin-bottom: -17px; +} + +.dropdown select { + clear: both; +} + +.dropdown dl { + clear: both; + cursor: pointer; + font-family: FiraSans-SemiBold; + font-size: 15px; + width: 292px; + height: 28px; + padding: 0 28px 0 12px; + color: #afafaf; + background: #575757; + position: relative; + display: flex; + align-items: center; +} + +.dropdown dl[dropped="true"] { + color: #404040; + background: linear-gradient(#afafaf, #afafaf); + z-index: 998; +} + +.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; + z-index: 999; +} +.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; +} + +.multiselect-box { + position: absolute; +} +.multiselect-box select { + font-family: FiraSans-SemiBold; + font-size: 15px; + color: #afafaf; + background-color: #252525; + border: none; + text-align-last: center; +} +.over-select { + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; +} +.multiselect-options { + position: absolute; + display: none; + border: none; +} +.multiselect-options span { + font-family: hifi-glyphs; + font-size: 13px; + color: #000000; +} +.multiselect-options label { + z-index: 2; + display: block; + font-family: FiraSans-SemiBold; + font-size: 11px; + color: #000000; + background-color: #afafaf; +} +.multiselect-options label:hover { + background-color: #1e90ff; +} +.multiselect-options input[type=checkbox] + label { + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH4goSADUOYnF4LQAAABl0RVh0Q29tbWVudABDcmVhdGVkIHdpdGggR0lNUFeBDhcAAAIMSURBVFjD7ZmxkqowFIZ/7mwJPen1AezV3t6hFvrQhweAHvrQ8wL2xt4HwD7ppd+tvHOvu0gCYdEZTsmAfpNzzpcTcAB84o3iD94sZuCx4+Pxwvl8dl4JcL1ef84lMQPPwBZDSgkp5XsASylBKUUYhhBCvDbw7XYDpRRKKTRNA8YYOOevC5ymKZRS/13jnHdCTwLMOW8tAc45GGNomuY1gKuq6lxFIQQopdMDXy4X5HmudW8URdMCSynBGNOG3Ww20wHf9dVWl4+wbav7a8CMsW9G+Cm22+1T2F8BzvMc1+u18z5CCJIkseNhKSX2+z2qqjLWl84zhBAURQHXde0A31Oa57nWbqSrLwDwPA9FUcD3fTtb82NKu8QOAHVda+srSRJt2E7gtpQKIXA4HH6csmzpyxj4dDo9TalSCpRS1HX9TV86RujSlxGwlBJpmnY+rJRCGIZ/s2BTX9qnZgBwHAee52mJ/l7nx+PRqr6MVtj3fZRlaVRf/5aGDX0Z17DrusiyrHfqhuqrt9aiKEIcx4OBTfU1aOMIggBlWYIQ0utP+uhr8CyxXC5RFIUxdBAE1srKePgxbcbVamWlnAZNa7rNSAhBlmWv8yLlWTPa0Nco83BbM2ZZZsUIowzwj80YxzEWi8VoB4IPGz9yb0YhBHa73agnGGtHJNd1R4ed9FVV33Awf6ebgd8b+Av9A/rq6s3hjgAAAABJRU5ErkJggg=='); + background-size: 11px 11px; + background-position: top 5px left 14px; +} +.multiselect-options input[type=checkbox]:enabled + label:hover { + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH4goSADUOYnF4LQAAABl0RVh0Q29tbWVudABDcmVhdGVkIHdpdGggR0lNUFeBDhcAAAIMSURBVFjD7ZmxkqowFIZ/7mwJPen1AezV3t6hFvrQhweAHvrQ8wL2xt4HwD7ppd+tvHOvu0gCYdEZTsmAfpNzzpcTcAB84o3iD94sZuCx4+Pxwvl8dl4JcL1ef84lMQPPwBZDSgkp5XsASylBKUUYhhBCvDbw7XYDpRRKKTRNA8YYOOevC5ymKZRS/13jnHdCTwLMOW8tAc45GGNomuY1gKuq6lxFIQQopdMDXy4X5HmudW8URdMCSynBGNOG3Ww20wHf9dVWl4+wbav7a8CMsW9G+Cm22+1T2F8BzvMc1+u18z5CCJIkseNhKSX2+z2qqjLWl84zhBAURQHXde0A31Oa57nWbqSrLwDwPA9FUcD3fTtb82NKu8QOAHVda+srSRJt2E7gtpQKIXA4HH6csmzpyxj4dDo9TalSCpRS1HX9TV86RujSlxGwlBJpmnY+rJRCGIZ/s2BTX9qnZgBwHAee52mJ/l7nx+PRqr6MVtj3fZRlaVRf/5aGDX0Z17DrusiyrHfqhuqrt9aiKEIcx4OBTfU1aOMIggBlWYIQ0utP+uhr8CyxXC5RFIUxdBAE1srKePgxbcbVamWlnAZNa7rNSAhBlmWv8yLlWTPa0Nco83BbM2ZZZsUIowzwj80YxzEWi8VoB4IPGz9yb0YhBHa73agnGGtHJNd1R4ed9FVV33Awf6ebgd8b+Av9A/rq6s3hjgAAAABJRU5ErkJggg=='); +} +.multiselect-options input[type=checkbox]:checked + label { + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH4goSADMveELP9QAAABl0RVh0Q29tbWVudABDcmVhdGVkIHdpdGggR0lNUFeBDhcAAAIqSURBVFjD7ZmxkqowFIb/7GwJPfT6APZib+9QC33o4QGghz70vIC9sfcBsE966bPNWlxnlQTDRWc4JUT4hpPz5SQSAAofFF/4sJiBx47v+wun04m8E+B6vVbzlJiBZ2CLIYRQQgj1EcBCCEUpRRRF4Jyrtwa+Xq+glEJKia7rkKYpGGPqbYHzPFdSyn+uMcZ6oScBZowpzvmje0jTVHVd9x7ATdMoxtjTMZxzUErV5MDn81mVZak1No7jab+wEEKlaaoNGwQBmQz4pq9H8/IeNo5jMmnRpWmKeyP8FZvN5insfwEuy1JdLpfecb7vI8uy3tb2Szelu91ONU1jtP9jjKmmabRgq6qC4zh2VrpbSsuy1FqNdPUFAK7roqoqeJ6ntXH4Mk1pn9gBoG1bbX1lWaYN2wv8KKWcc+z3+z+7LFv6MgY+Ho9PUyqlBKUUbduqe33pGKFPX0bAQgiV53nvj6WUiKIIt2K0qS/tXTMAEELguq6W6H/nOQ6Hg1V9GX1hz/NIXdckCALtB7Vta1VfxnPYcRwURUEeNSGmYaqvwVqL45gkSfIysKm+Xlo4wjAkdV3D9/1BLxmir5d7ieVySaqqMoYOw3CwEV5ufkyLcbVaIUkSq2d1xt2abjH6vo+iKKwfLA5uL58Vow19jdIPPyrGoiisGGGUBv6+GJMkwWKxGO2M+dvGQ36LEZxztd1uRz0Qt7ZFchwHY8NOelQ1NAjm/+lm4M8G/gH2zx33BSr7jAAAAABJRU5ErkJggg=='); +} +.multiselect-options input[type=checkbox]:checked + label:hover { + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH4goSADMveELP9QAAABl0RVh0Q29tbWVudABDcmVhdGVkIHdpdGggR0lNUFeBDhcAAAIqSURBVFjD7ZmxkqowFIb/7GwJPfT6APZib+9QC33o4QGghz70vIC9sfcBsE966bPNWlxnlQTDRWc4JUT4hpPz5SQSAAofFF/4sJiBx47v+wun04m8E+B6vVbzlJiBZ2CLIYRQQgj1EcBCCEUpRRRF4Jyrtwa+Xq+glEJKia7rkKYpGGPqbYHzPFdSyn+uMcZ6oScBZowpzvmje0jTVHVd9x7ATdMoxtjTMZxzUErV5MDn81mVZak1No7jab+wEEKlaaoNGwQBmQz4pq9H8/IeNo5jMmnRpWmKeyP8FZvN5insfwEuy1JdLpfecb7vI8uy3tb2Szelu91ONU1jtP9jjKmmabRgq6qC4zh2VrpbSsuy1FqNdPUFAK7roqoqeJ6ntXH4Mk1pn9gBoG1bbX1lWaYN2wv8KKWcc+z3+z+7LFv6MgY+Ho9PUyqlBKUUbduqe33pGKFPX0bAQgiV53nvj6WUiKIIt2K0qS/tXTMAEELguq6W6H/nOQ6Hg1V9GX1hz/NIXdckCALtB7Vta1VfxnPYcRwURUEeNSGmYaqvwVqL45gkSfIysKm+Xlo4wjAkdV3D9/1BLxmir5d7ieVySaqqMoYOw3CwEV5ufkyLcbVaIUkSq2d1xt2abjH6vo+iKKwfLA5uL58Vow19jdIPPyrGoiisGGGUBv6+GJMkwWKxGO2M+dvGQ36LEZxztd1uRz0Qt7ZFchwHY8NOelQ1NAjm/+lm4M8G/gH2zx33BSr7jAAAAABJRU5ErkJggg=='); +} + +.dynamic-multiselect { + position: relative; + top: 6px; + padding-bottom: 6px; +} + +div.refresh { + box-sizing: border-box; + padding-right: 44px; +} +div.refresh input[type="button"] { + float: right; + margin-right: -44px; + position: relative; + left: 10px; +} + +.color-picker { + box-sizing: border-box; + width: 26px; + height: 26px; + border: 3px solid #2B2B2B; + cursor: pointer; +} +.color-picker:focus { + outline: none; +} +.color-picker[active="true"] { + border-color: #000; +} + +.color-picker[disabled="disabled"] { + border-color: #afafaf; +} + +.colpick { + z-index: 3; +} +.colpick[disabled="disabled"] { + display: none !important; +} + +.rgb label { + float: left; + margin-top: 10px; + margin-left: 21px; +} +.rgb label + * { + clear: both; +} + +.rgb div.legend { + float: left; + margin-top: 10px; + margin-left: 21px; +} +.rgb div.legend + * { + clear: both; +} + +.draggable-number-container { + flex: 0 1 124px; +} +.draggable-number { + position: relative; + height: 28px; + flex: 0 1 124px; + display: flex; + align-items: center; +} + +.draggable-number .text { + position: absolute; + display: inline-block; + color: #afafaf; + background-color: #252525; + font-family: FiraSans-SemiBold; + font-size: 15px; + margin: 0; + padding: 0 16px; + height: 28px; + width: 100%; + line-height: 2; + box-sizing: border-box; + z-index: 1; +} +.draggable-number .text:hover { + cursor: ew-resize; +} +.draggable-number .left-arrow, .draggable-number .right-arrow { + position: absolute; + display: inline-block; + font-family: HiFi-Glyphs; + font-size: 20px; + z-index: 2; +} +.draggable-number span:hover { + cursor: default; +} +.draggable-number .left-arrow { + top: 3px; + left: 0; + transform: rotate(180deg); +} +.draggable-number .right-arrow { + top: 3px; + right: 0; +} +.draggable-number input[type=number] { + position: absolute; + right: 0; + width: 100%; +} +.draggable-number input[type=button] { + position: absolute; + top: 0; +} +.draggable-number input::-webkit-inner-spin-button { + -webkit-appearance: none; + visibility: hidden; +} +.draggable-number.fstuple { + height: 28px; + width: 124px; + left: 12px; +} +.draggable-number.fstuple + .draggable-number.fstuple { + margin-left: 28px; +} +.draggable-number.fstuple input { + right: -10px; +} +.draggable-number.fstuple .sublabel { + position: absolute; + top: 6px; + left: -16px; + font-family: FiraSans-SemiBold; + font-size: 15px; +} + +.rect .rect-row { + margin-bottom: 8px; +} + +.row .property { + width: auto; + display: inline-block; + margin-right: 6px; +} +.row .property:last-child { + margin-right: 0; +} +.row .property input { + clear: both; + float: left; +} + +.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,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'); +} +.texture-image.no-preview { + background-image: url('data:image/png;base64,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'); +} + +.two-column { + display: table; + width: 100%; +} +.two-column > div { + display: table-cell; + width: 50%; +} + +#properties-list .fieldset .two-column { + padding-top: 10px; + display: flex; +} + +#properties-list .two-column .fieldset { + width: 50%; + margin: 0; + padding: 0; + border-top: none; + box-shadow: none; +} + +#properties-list .two-column .column { + position: relative; + top: -10px; +} + +#properties-list .two-column .fieldset div.legend { + width: 100%; + margin: 21px -21px 0 -21px; + padding: 16px 0 0 21px; + font-family: Raleway-Regular; + font-size: 12px; + color: #afafaf; + height: 10px; + text-transform: uppercase; + outline: none; +} + +#properties-list .two-column + .property { + margin-top: 6px; +} + +.fieldset .checkbox-sub-props { + margin-top: 0; +} + +.fieldset .checkbox-sub-props .property:first-child { + margin-top: 0; +} + +.column { + vertical-align: top; +} + +.indent { + margin-left: 24px; +} + +::-webkit-scrollbar { + width: 20px; + height: 10px; +} +::-webkit-scrollbar-track { + background-color: #2e2e2e; +} +#entity-table-scroll::-webkit-scrollbar-track { + border-bottom-right-radius: 7px; +} + +::-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; +} + + +div#grid-section, body#entity-list-body { + padding-bottom: 0; + margin: 16px; +} + +#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; +} + +#entity-list { + position: relative; /* New positioning context. */ +} + +#filter-area { + padding-right: 168px; + padding-bottom: 24px; +} + +#filter-type-multiselect-box select { + border-radius: 14.5px; + width: 107px; + height: 28px; +} +#filter-type-options { + position: absolute; + top: 48px; +} +#filter-type-options div { + position: relative; + height: 22px; +} +#filter-type-options span { + position: relative; + top: 3px; + font-family: HiFi-Glyphs; + font-size: 13px; + color: #000000; + padding-left: 6px; + padding-right: 4px; +} +#filter-type-options label { + position: absolute; + top: -20px; + z-index: 2; + height: 22px; + width: 200px; + padding-top: 1px; +} +#filter-type-options-buttons { + top: -22px; + width: 224px; + z-index: 2; + background-color: #afafaf; + padding-bottom: 6px; +} +#filter-type-options input[type=button] { + position: relative; + left: 16px; + z-index: 3; + height: 23px; + min-width: 60px; + font-size: 10px; + color: #000; + background: linear-gradient(#afafaf 20%, #808080 100%); +} +#filter-type-options input[type=button]:enabled:hover { + background: linear-gradient(#afafaf 20%, #575757 100%); +} + +#filter-search-and-icon { + position: relative; + left: 118px; + width: calc(100% - 126px); +} + +#filter-in-view { + position: absolute; + top: 0; + right: 126px; +} + +#filter-radius-and-unit { + position: relative; + float: right; + margin-right: -168px; + top: -45px; +} +#filter-radius-and-unit label { + margin-left: 2px; +} +#filter-radius-and-unit span { + position: relative; + top: 25px; + right: 9px; + z-index: 2; + font-style: italic; +} +#filter-radius-and-unit input { + width: 120px; + border-radius: 14.5px; + font-style: italic; +} +#filter-radius-and-unit input[type=number]::-webkit-inner-spin-button { + display: none; +} + +#entity-list-footer { + padding-top: 9px; +} + +#footer-text { + float: right; + padding-top: 12px; + padding-right: 22px; +} + +input[type=button]#export { + height: 38px; + width: 180px; +} + +#no-entities { + display: none; + position: absolute; + top: 80px; + padding: 12px; + font-family: FiraSans-SemiBold; + font-size: 15px; + font-style: italic; + color: #afafaf; +} + +#entity-table-columns-multiselect { + position: absolute; + top: 51px; + right: 22px; +} +#entity-table-columns-multiselect-box select { + height: 28px; + width: 20px; + background-color: #1c1c1c; + border-top-right-radius: 7px; +} +#entity-table-columns-options { + position: absolute; + top: 50px; + right: 110px; +} +#entity-table-columns-options div { + position: relative; + height: 22px; +} +#entity-table-columns-options label { + position: absolute; + top: -22px; + height: 22px; + width: 100px; + padding-top: 4px; +} +#entity-table-columns-options input[type=checkbox] + label { + padding-left: 30px; +} + +#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; + border-bottom: 2px solid #575757; + border-bottom-left-radius: 7px; + border-bottom-right-radius: 7px; + 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 { + 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; +} + +#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 thead .sort-order { + display: inline-block; + width: 8px; + margin: -5px 0 -3px 0; + vertical-align: middle; +} + +#entity-table thead .resizer { + position: absolute; + top: 1px; + height: 26px; + width: 10px; + cursor: col-resize; +} + +#entity-table .dragging { + background-color: #b3ecff; +} + +#entity-table td { + box-sizing: border-box; +} +#entity-table td.glyph { + text-align: center; + padding: 0; +} + +#properties-base { + border-top: none !important; + box-shadow: none !important; + margin-bottom: 5px !important; +} + +#properties-base #property-type-icon { + font-family: HiFi-Glyphs; + font-size: 31px; + color: #00b4ef; + margin: -4px 12px -4px -2px; + width: auto; + display: none; +} + +#properties-base #property-type { + padding: 5px 24px 5px 0; + border-right: 1px solid #808080; + width: auto; + display: inline-block; +} + +#properties-base .checkbox label span { + font-family: HiFi-Glyphs; + font-size: 20px; + padding-right: 6px; + vertical-align: top; + position: relative; + top: -4px; +} + +#properties-base input[type=checkbox]:checked + label span { + color: #ffffff; +} + +#id label { + width: 24px; +} +#property-id { + display: inline-block; +} +#property-id::selection { + color: #000000; + background-color: #00b4ef; +} + +input#property-scale-button-rescale { + min-width: 50px; + left: 152px; +} +input#property-scale-button-reset { + margin-right: 0; + left: 250px; +} + +#property-userData-static, +#property-materialData-static { + display: none; + z-index: 99; + position: absolute; + width: 96%; + padding-left: 1%; + margin-top: 5px; + margin-bottom: 10px; + background-color: #2e2e2e; +} + +#property-userData-saved, +#property-materialData-saved { + margin-top: 5px; + font-size: 16px; + display: none; +} + + +#div-property-collisionSoundURL[style*="display: none"] + .property { + margin-top: 0; +} + +.context-menu { + display: none; + position: fixed; + color: #000000; + background-color: #afafaf; + padding: 5px 0 5px 0; + cursor: default; +} +.context-menu li { + list-style-type: none; + padding: 4px 18px 4px 18px; + margin: 0; + white-space: nowrap; +} +.context-menu li:hover { + background-color: #e3e3e3; +} +.context-menu li.separator { + border-top: 1px solid #333333; + margin: 5px 5px; + padding: 0 0; +} +.context-menu li.disabled { + color: #333333; +} +.context-menu li.separator:hover, .context-menu li.disabled:hover { + background-color: #afafaf; +} + +input.rename-entity { + height: 100%; + width: 100%; + border: none; + font-family: FiraSans-SemiBold; + font-size: 15px; + /* need this to show the text cursor when the input field is empty */ + padding-left: 2px; +} + +.create-app-tooltip { + z-index: 100; + position: absolute; + background: #6a6a6a; + border: 1px solid black; + width: 258px; + min-height: 20px; + padding: 5px; + z-index: 100; +} + +.create-app-tooltip .create-app-tooltip-description { + font-size: 12px; + font-style: italic; + color: #ffffff; +} + +.create-app-tooltip .create-app-tooltip-js-attribute { + font-family: Raleway-SemiBold; + font-size: 11px; + color: #000000; + bottom: 0; + margin-top: 5px; +} + +#toggle-space-mode::before { + font-family: HiFi-Glyphs; + font-size: 20px; + text-transform: none; + min-width: 32px; + padding-right: 4px; + vertical-align: middle; +} + +#toggle-space-mode.space-mode-local::before { + content: "m"; +} + +#toggle-space-mode.space-mode-world::before { + content: "\e02c"; +} + +.container { + display: flex; + flex-flow: row nowrap; + margin-bottom: 8px; + min-height: 28px; +} + +.container > label { + margin-top: 6px; + width: 160px; + min-width: 160px; + max-width: 160px; +} + +.container > div.checkbox { + padding-top: 6px; +} + +.container > .value { + width: 100%; +} + +.container .row { + display: flex; + flex-flow: row nowrap; +} + +.container.shrink { + width: min-content; +} + +.fstuple { + display: flex; + flex-flow: row; +} +.fstuple input { + margin-left: 4px; + margin-right: 10px; +} +.fstuple label.red, .fstuple label.x, .fstuple label.w { + color: #C62147; +} +.fstuple label.green, .fstuple label.y, .fstuple label.h { + color: #359D85; +} +.fstuple label.blue, .fstuple label.z { + color: #0093C5; +} + +.xyz.fstuple, .pyr.fstuple { + position: relative; + left: -12px; + min-width: 50px; + width: 100px; +} + +.rgb.fstuple .tuple { + display: none; +} + +input.number-slider { + background: #575757; + border-radius: 4px; + color: white; +} + +.fstuple > div { + display: flex; + align-items: center; + justify-content: left; +} + +.flex-row { + display: flex; + flex-flow: row; +} + +.flex-column { + display: flex; + flex-flow: column; +} + +.flex-center { + align-items: center; +} + +.flex-evenly-spaced { + flex: 1; +} + +#property-serverScripts-status { + font-family: Raleway-Light; + font-size: 14px; + margin: 6px 0; + cursor: default; +} + +#property-name, #property-id { + display: flex; + width: 100%; +} + +.spacemode-hidden { + display: none; +} + +#placeholder-property-type { + min-width: 0; +} + +.collapse-icon { + cursor: pointer; +} + +#property-userData-editor.error { + border: 2px solid red; +} + +#property-userData-editorStatus { + color: white; + background-color: red; + padding: 5px; + display: none; + cursor: pointer; +} + +#property-materialData-editor.error { + border: 2px solid red; +} + +#property-materialData-editorStatus { + color: white; + background-color: red; + padding: 5px; + display: none; + cursor: pointer; +} + +input[type=number].hide-spinner::-webkit-inner-spin-button { + -webkit-appearance: none; + visibility: hidden; +} + +div.jsoneditor-menu a.jsoneditor-poweredBy { + display: none; +} +td.zoneItem { + width: 100%; +} + +select.zoneSelect { + clear: both; + cursor: pointer; + font-family: FiraSans-SemiBold; + font-size: 15px; + width: 90%; + height: 28px; + padding: 0 28px 0 12px; + color: #afafaf; + background: #575757; + position: relative; + display: inline; + border: 0px; + align-items: center; + outline: none; +} + +div.multiZoneSelToolbar { + padding: 0px; +} + From 0afca55e18f1867b5c7f86a7e1d4f308e7776a12 Mon Sep 17 00:00:00 2001 From: Alezia Kurdis <60075796+AleziaKurdis@users.noreply.github.com> Date: Fri, 3 Apr 2020 23:32:45 -0400 Subject: [PATCH 017/160] Add the new property "renderWithZones" This adds the Tooltip for new property "renderWithZones" (Required for PR#78) --- .../create/assets/data/createAppTooltips.json | 49 +++++++++++++++---- 1 file changed, 40 insertions(+), 9 deletions(-) diff --git a/scripts/system/create/assets/data/createAppTooltips.json b/scripts/system/create/assets/data/createAppTooltips.json index 24f443f901..d473dc5a8e 100644 --- a/scripts/system/create/assets/data/createAppTooltips.json +++ b/scripts/system/create/assets/data/createAppTooltips.json @@ -3,7 +3,10 @@ "tooltip": "The shape of this entity's geometry." }, "color": { - "tooltip": "The RGB value of this entity." + "tooltip": "The color of this entity." + }, + "shapeAlpha": { + "tooltip": "Set the opacity of the entity between 0.0 fully transparent and 1.0 completely opaque." }, "text": { "tooltip": "The text to display on the entity." @@ -12,17 +15,29 @@ "tooltip": "The color of the text." }, "textAlpha": { - "tooltip": "The alpha of the text." + "tooltip": "Set the opacity of the text between 0.0 fully transparent and 1.0 completely opaque." }, "backgroundColor": { "tooltip": "The color of the background." }, "backgroundAlpha": { - "tooltip": "The alpha of the background." + "tooltip": "Set the opacity of the background between 0.0 fully transparent and 1.0 completely opaque." }, "lineHeight": { "tooltip": "The height of each line of text. This determines the size of the text." }, + "font": { + "tooltip": "The font to render the text. Supported values: \"Courier\", \"Inconsolata\", \"Roboto\", \"Timeless\", or a URL to a .sdff file." + }, + "textEffect": { + "tooltip": "The effect that is applied to the text." + }, + "textEffectColor": { + "tooltip": "The color of the text effect." + }, + "textEffectThickness": { + "tooltip": "The magnitude of the text effect." + }, "textBillboardMode": { "tooltip": "If enabled, determines how the entity will face the camera.", "jsPropertyName": "billboardMode" @@ -196,6 +211,9 @@ "tooltip": "The tint to be applied to the image.", "jsPropertyName": "color" }, + "imageAlpha": { + "tooltip": "Set the opacity of the image between 0.0 fully transparent and 1.0 completely opaque." + }, "emissive": { "tooltip": "If enabled, the image will display at full brightness." }, @@ -215,6 +233,16 @@ "dpi": { "tooltip": "The resolution to display the page at, in pixels per inch. Use this to resize your web source in the frame." }, + "webBillboardMode": { + "tooltip": "If enabled, determines how the entity will face the camera.", + "jsPropertyName": "billboardMode" + }, + "inputMode": { + "tooltip": "The user input mode to use." + }, + "showKeyboardFocusHighlight": { + "tooltip": "If enabled, highlights when it has keyboard focus." + }, "isEmitting": { "tooltip": "If enabled, then particles are emitted." }, @@ -291,20 +319,20 @@ "tooltip": "The spread in color that each particle is given, resulting in a variety of colors." }, "particleAlphaTriple": { - "tooltip": "The alpha of each particle.", + "tooltip": "Set the opacity of the each particle between 0.0 fully transparent and 1.0 completely opaque.", "jsPropertyName": "alpha" }, "alpha": { - "tooltip": "The alpha of each particle." + "tooltip": "Set the opacity of the each particle between 0.0 fully transparent and 1.0 completely opaque." }, "alphaStart": { - "tooltip": "The start alpha of each particle." + "tooltip": "Set the initial opacity level of the each particle between 0.0 fully transparent and 1.0 completely opaque." }, "alphaFinish": { - "tooltip": "The finish alpha of each particle." + "tooltip": "Set the final opacity level of the each particle between 0.0 fully transparent and 1.0 completely opaque." }, "alphaSpread": { - "tooltip": "The spread in alpha that each particle is given, resulting in a variety of alphas." + "tooltip": "The spread in opacity that each particle is given, resulting in a variety of opacity levels." }, "emitAcceleration": { "tooltip": "The acceleration that is applied to each particle during its lifetime." @@ -567,6 +595,9 @@ "primitiveMode": { "tooltip": "The mode in which to draw an entity, either \"Solid\" or \"Wireframe\"." }, + "renderWithZones": { + "tooltip": "This entity will be rendered only from the specified zones. If not specified, the entity will be always rendered." + }, "groupCulled": { "tooltip": "If false, individual pieces of the entity may be culled by the render engine. If true, either the entire entity will be culled, or it won't at all." }, @@ -574,7 +605,7 @@ "tooltip": "The tint of the web entity." }, "webAlpha": { - "tooltip": "The alpha of the web entity." + "tooltip": "Set the opacity of the web entity between 0.0 fully transparent and 1.0 completely opaque." }, "maxFPS": { "tooltip": "The FPS at which to render the web entity. Higher values will have a performance impact." From 16c5d8c051e073cb5e411587eef143a90f206def Mon Sep 17 00:00:00 2001 From: Alezia Kurdis <60075796+AleziaKurdis@users.noreply.github.com> Date: Fri, 3 Apr 2020 23:37:18 -0400 Subject: [PATCH 018/160] Support for "Multiple Zones Selector" Renderer Add the code to expose the Zones list to the entityProperty. as support for the new "Multiple Zones Selector" Renderer type. (Required to support the new property "renderWithZones" for PR #78) --- scripts/system/create/edit.js | 5739 +++++++++++++++++---------------- 1 file changed, 2881 insertions(+), 2858 deletions(-) diff --git a/scripts/system/create/edit.js b/scripts/system/create/edit.js index ef07aa4d6e..1ab8b7f75d 100644 --- a/scripts/system/create/edit.js +++ b/scripts/system/create/edit.js @@ -1,2858 +1,2881 @@ -// edit.js -// -// Created by Brad Hefta-Gaub on 10/2/14. -// Persist toolbar by HRS 6/11/15. -// Copyright 2014 High Fidelity, Inc. -// -// This script allows you to edit entities with a new UI/UX for mouse and trackpad based editing -// -// 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, 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, OverlaySystemWindow, - keyUpEventFromUIWindow:true */ - -(function() { // BEGIN LOCAL_SCOPE - -"use strict"; - -var EDIT_TOGGLE_BUTTON = "com.highfidelity.interface.system.editButton"; - -var CONTROLLER_MAPPING_NAME = "com.highfidelity.editMode"; - -Script.include([ - "../libraries/stringHelpers.js", - "../libraries/dataViewHelpers.js", - "../libraries/progressDialog.js", - "../libraries/ToolTip.js", - "../libraries/entityCameraTool.js", - "../libraries/utils.js", - "../libraries/entityIconOverlayManager.js", - "../libraries/gridTool.js", - "entityList/entityList.js", - "entitySelectionTool/entitySelectionTool.js" -]); - -var CreateWindow = Script.require('./modules/createWindow.js'); - -var TITLE_OFFSET = 60; -var CREATE_TOOLS_WIDTH = 490; -var MAX_DEFAULT_ENTITY_LIST_HEIGHT = 942; - -var DEFAULT_IMAGE = "https://hifi-content.s3.amazonaws.com/DomainContent/production/no-image.jpg"; - -var createToolsWindow = new CreateWindow( - Script.resolvePath("qml/EditTools.qml"), - 'Create Tools', - 'com.highfidelity.create.createToolsWindow', - function () { - var windowHeight = Window.innerHeight - TITLE_OFFSET; - if (windowHeight > MAX_DEFAULT_ENTITY_LIST_HEIGHT) { - windowHeight = MAX_DEFAULT_ENTITY_LIST_HEIGHT; - } - return { - size: { - x: CREATE_TOOLS_WIDTH, - y: windowHeight - }, - position: { - x: Window.x + Window.innerWidth - CREATE_TOOLS_WIDTH, - y: Window.y + TITLE_OFFSET - } - } - }, - false -); - -/** - * @description Returns true in case we should use the tablet version of the CreateApp - * @returns boolean - */ -var shouldUseEditTabletApp = function() { - return HMD.active || (!HMD.active && !Settings.getValue("desktopTabletBecomesToolbar", true)); -}; - - -var selectionDisplay = SelectionDisplay; -var selectionManager = SelectionManager; - -var PARTICLE_SYSTEM_URL = Script.resolvePath("assets/images/icon-particles.svg"); -var POINT_LIGHT_URL = Script.resolvePath("assets/images/icon-point-light.svg"); -var SPOT_LIGHT_URL = Script.resolvePath("assets/images/icon-spot-light.svg"); -var ZONE_URL = Script.resolvePath("assets/images/icon-zone.svg"); - -var entityIconOverlayManager = new EntityIconOverlayManager(['Light', 'ParticleEffect', 'Zone'], function(entityID) { - var properties = Entities.getEntityProperties(entityID, ['type', 'isSpotlight']); - if (properties.type === 'Light') { - return { - url: properties.isSpotlight ? SPOT_LIGHT_URL : POINT_LIGHT_URL, - }; - } else if (properties.type === 'Zone') { - return { - url: ZONE_URL, - }; - } else { - return { - url: PARTICLE_SYSTEM_URL, - }; - } -}); - -var cameraManager = new CameraManager(); - -var grid = new Grid(); -var gridTool = new GridTool({ - horizontalGrid: grid, - createToolsWindow: createToolsWindow, - shouldUseEditTabletApp: shouldUseEditTabletApp -}); -gridTool.setVisible(false); - -var EntityShapeVisualizer = Script.require('./modules/entityShapeVisualizer.js'); -var entityShapeVisualizer = new EntityShapeVisualizer(["Zone"]); - -var entityListTool = new EntityListTool(shouldUseEditTabletApp); - -selectionManager.addEventListener(function () { - selectionDisplay.updateHandles(); - entityIconOverlayManager.updatePositions(); - entityShapeVisualizer.setEntities(selectionManager.selections); -}); - -var DEGREES_TO_RADIANS = Math.PI / 180.0; -var RADIANS_TO_DEGREES = 180.0 / Math.PI; - -var MIN_ANGULAR_SIZE = 2; -var MAX_ANGULAR_SIZE = 45; -var allowLargeModels = true; -var allowSmallModels = true; - -var DEFAULT_DIMENSION = 0.20; - -var DEFAULT_DIMENSIONS = { - x: DEFAULT_DIMENSION, - y: DEFAULT_DIMENSION, - z: DEFAULT_DIMENSION -}; - -var DEFAULT_LIGHT_DIMENSIONS = Vec3.multiply(20, DEFAULT_DIMENSIONS); - -var MENU_AUTO_FOCUS_ON_SELECT = "Auto Focus on Select"; -var MENU_EASE_ON_FOCUS = "Ease Orientation on Focus"; -var MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE = "Show Lights and Particle Systems in Create Mode"; -var MENU_SHOW_ZONES_IN_EDIT_MODE = "Show Zones in Create Mode"; - -var MENU_CREATE_ENTITIES_GRABBABLE = "Create Entities As Grabbable (except Zones, Particles, and Lights)"; -var MENU_ALLOW_SELECTION_LARGE = "Allow Selecting of Large Models"; -var MENU_ALLOW_SELECTION_SMALL = "Allow Selecting of Small Models"; -var MENU_ALLOW_SELECTION_LIGHTS = "Allow Selecting of Lights"; - -var SETTING_AUTO_FOCUS_ON_SELECT = "autoFocusOnSelect"; -var SETTING_EASE_ON_FOCUS = "cameraEaseOnFocus"; -var SETTING_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE = "showLightsAndParticlesInEditMode"; -var SETTING_SHOW_ZONES_IN_EDIT_MODE = "showZonesInEditMode"; - -var SETTING_EDIT_PREFIX = "Edit/"; - - -var CREATE_ENABLED_ICON = "icons/tablet-icons/edit-i.svg"; -var CREATE_DISABLED_ICON = "icons/tablet-icons/edit-disabled.svg"; - -// marketplace info, etc. not quite ready yet. -var SHOULD_SHOW_PROPERTY_MENU = false; -var INSUFFICIENT_PERMISSIONS_ERROR_MSG = "You do not have the necessary permissions to edit on this domain."; -var INSUFFICIENT_PERMISSIONS_IMPORT_ERROR_MSG = "You do not have the necessary permissions to place items on this domain."; - -var isActive = false; -var createButton = null; - -var IMPORTING_SVO_OVERLAY_WIDTH = 144; -var IMPORTING_SVO_OVERLAY_HEIGHT = 30; -var IMPORTING_SVO_OVERLAY_MARGIN = 5; -var IMPORTING_SVO_OVERLAY_LEFT_MARGIN = 34; -var importingSVOImageOverlay = Overlays.addOverlay("image", { - imageURL: Script.resolvePath("assets/images/hourglass.svg"), - width: 20, - height: 20, - alpha: 1.0, - x: Window.innerWidth - IMPORTING_SVO_OVERLAY_WIDTH, - y: Window.innerHeight - IMPORTING_SVO_OVERLAY_HEIGHT, - visible: false -}); -var importingSVOTextOverlay = Overlays.addOverlay("text", { - font: { - size: 14 - }, - text: "Importing SVO...", - leftMargin: IMPORTING_SVO_OVERLAY_LEFT_MARGIN, - x: Window.innerWidth - IMPORTING_SVO_OVERLAY_WIDTH - IMPORTING_SVO_OVERLAY_MARGIN, - y: Window.innerHeight - IMPORTING_SVO_OVERLAY_HEIGHT - IMPORTING_SVO_OVERLAY_MARGIN, - width: IMPORTING_SVO_OVERLAY_WIDTH, - height: IMPORTING_SVO_OVERLAY_HEIGHT, - backgroundColor: { - red: 80, - green: 80, - blue: 80 - }, - backgroundAlpha: 0.7, - visible: false -}); - -var MARKETPLACE_URL = Account.metaverseServerURL + "/marketplace"; -var marketplaceWindow = new OverlayWebWindow({ - title: 'Marketplace', - source: "about:blank", - width: 900, - height: 700, - visible: false -}); - -function showMarketplace(marketplaceID) { - var url = MARKETPLACE_URL; - if (marketplaceID) { - url = url + "/items/" + marketplaceID; - } - marketplaceWindow.setURL(url); - marketplaceWindow.setVisible(true); - marketplaceWindow.raise(); - - UserActivityLogger.logAction("opened_marketplace"); -} - -function hideMarketplace() { - marketplaceWindow.setVisible(false); - marketplaceWindow.setURL("about:blank"); -} - -// function toggleMarketplace() { -// if (marketplaceWindow.visible) { -// hideMarketplace(); -// } else { -// showMarketplace(); -// } -// } - -function adjustPositionPerBoundingBox(position, direction, registration, dimensions, orientation) { - // Adjust the position such that the bounding box (registration, dimensions 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 GRABBABLE_ENTITIES_MENU_CATEGORY = "Edit"; - -// Handles any edit mode updates required when domains have switched -function checkEditPermissionsAndUpdate() { - if ((createButton === null) || (createButton === undefined)) { - //--EARLY EXIT--( nothing to safely update ) - return; - } - - var hasRezPermissions = (Entities.canRez() || Entities.canRezTmp() || Entities.canRezCertified() || Entities.canRezTmpCertified()); - createButton.editProperties({ - icon: (hasRezPermissions ? CREATE_ENABLED_ICON : CREATE_DISABLED_ICON), - captionColor: (hasRezPermissions ? "#ffffff" : "#888888"), - }); - - if (!hasRezPermissions && isActive) { - that.setActive(false); - tablet.gotoHomeScreen(); - } -} - -// Copies the properties in `b` into `a`. `a` will be modified. -function copyProperties(a, b) { - for (var key in b) { - a[key] = b[key]; - } - return a; -} - -const DEFAULT_DYNAMIC_PROPERTIES = { - dynamic: true, - damping: 0.39347, - angularDamping: 0.39347, - gravity: { x: 0, y: -9.8, z: 0 }, -}; - -const DEFAULT_NON_DYNAMIC_PROPERTIES = { - dynamic: false, - damping: 0, - angularDamping: 0, - gravity: { x: 0, y: 0, z: 0 }, -}; - -const DEFAULT_ENTITY_PROPERTIES = { - All: { - description: "", - rotation: { x: 0, y: 0, z: 0, w: 1 }, - collidesWith: "static,dynamic,kinematic,otherAvatar,myAvatar", - collisionSoundURL: "", - cloneable: false, - ignoreIK: true, - canCastShadow: true, - href: "", - script: "", - serverScripts:"", - velocity: { - x: 0, - y: 0, - z: 0 - }, - angularVelocity: { - x: 0, - y: 0, - z: 0 - }, - restitution: 0.5, - friction: 0.5, - density: 1000, - dynamic: false, - }, - Shape: { - shape: "Box", - dimensions: { x: 0.2, y: 0.2, z: 0.2 }, - color: { red: 0, green: 180, blue: 239 }, - }, - Text: { - text: "Text", - dimensions: { - x: 0.65, - y: 0.3, - z: 0.01 - }, - textColor: { red: 255, green: 255, blue: 255 }, - backgroundColor: { red: 0, green: 0, blue: 0 }, - lineHeight: 0.06, - faceCamera: false, - }, - Zone: { - dimensions: { - x: 10, - y: 10, - z: 10 - }, - flyingAllowed: true, - ghostingAllowed: true, - filter: "", - keyLightMode: "inherit", - keyLightColor: { red: 255, green: 255, blue: 255 }, - keyLight: { - intensity: 1.0, - direction: { - x: 0.0, - y: -0.707106769084930, // 45 degrees - z: 0.7071067690849304 - }, - castShadows: true - }, - ambientLightMode: "inherit", - ambientLight: { - ambientIntensity: 0.5, - ambientURL: "" - }, - hazeMode: "inherit", - haze: { - hazeRange: 1000, - hazeAltitudeEffect: false, - hazeBaseRef: 0, - hazeColor: { - red: 128, - green: 154, - blue: 179 - }, - hazeBackgroundBlend: 0, - hazeEnableGlare: false, - hazeGlareColor: { - red: 255, - green: 229, - blue: 179 - }, - }, - shapeType: "box", - bloomMode: "inherit", - avatarPriority: "inherit" - }, - Model: { - collisionShape: "none", - compoundShapeURL: "", - animation: { - url: "", - running: false, - allowTranslation: false, - loop: true, - hold: false, - currentFrame: 0, - firstFrame: 0, - lastFrame: 100000, - fps: 30.0, - } - }, - Image: { - dimensions: { - x: 0.5385, - y: 0.2819, - z: 0.0092 - }, - shapeType: "box", - collisionless: true, - keepAspectRatio: false, - imageURL: DEFAULT_IMAGE - }, - Web: { - dimensions: { - x: 1.6, - y: 0.9, - z: 0.01 - }, - sourceUrl: "https://projectathena.io/", - dpi: 30, - }, - ParticleEffect: { - lifespan: 1.5, - maxParticles: 10, - textures: "https://content.highfidelity.com/DomainContent/production/Particles/wispy-smoke.png", - emitRate: 5.5, - emitSpeed: 0, - speedSpread: 0, - emitDimensions: { x: 0, y: 0, z: 0 }, - emitOrientation: { x: 0, y: 0, z: 0, w: 1 }, - emitterShouldTrail: true, - particleRadius: 0.25, - radiusStart: 0, - radiusSpread: 0, - particleColor: { - red: 255, - green: 255, - blue: 255 - }, - colorSpread: { - red: 0, - green: 0, - blue: 0 - }, - alpha: 0, - alphaStart: 1, - alphaSpread: 0, - emitAcceleration: { - x: 0, - y: 2.5, - z: 0 - }, - accelerationSpread: { - x: 0, - y: 0, - z: 0 - }, - particleSpin: 0, - spinSpread: 0, - rotateWithEntity: false, - polarStart: 0, - polarFinish: Math.PI, - azimuthStart: -Math.PI, - azimuthFinish: Math.PI - }, - Light: { - color: { red: 255, green: 255, blue: 255 }, - intensity: 5.0, - dimensions: DEFAULT_LIGHT_DIMENSIONS, - falloffRadius: 1.0, - isSpotlight: false, - exponent: 1.0, - cutoff: 75.0, - }, -}; - -var toolBar = (function () { - var EDIT_SETTING = "io.highfidelity.isEditing"; // for communication with other scripts - var that = {}, - toolBar, - activeButton = null, - systemToolbar = null, - dialogWindow = null, - tablet = null; - - function createNewEntity(requestedProperties) { - var dimensions = requestedProperties.dimensions ? requestedProperties.dimensions : DEFAULT_DIMENSIONS; - var position = getPositionToCreateEntity(); - var entityID = null; - - var properties = {}; - - copyProperties(properties, DEFAULT_ENTITY_PROPERTIES.All); - - var type = requestedProperties.type; - if (type === "Box" || type === "Sphere") { - copyProperties(properties, DEFAULT_ENTITY_PROPERTIES.Shape); - } else { - copyProperties(properties, DEFAULT_ENTITY_PROPERTIES[type]); - } - - // We apply the requested properties first so that they take priority over any default properties. - copyProperties(properties, requestedProperties); - - if (properties.dynamic) { - copyProperties(properties, DEFAULT_DYNAMIC_PROPERTIES); - } else { - copyProperties(properties, DEFAULT_NON_DYNAMIC_PROPERTIES); - } - - - if (position !== null && position !== undefined) { - 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", "Image", "Web", "Material"]; - 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 }; - registration = DEFAULT_REGISTRATION; - } - - var orientation = properties.orientation; - if (orientation === undefined) { - properties.orientation = MyAvatar.orientation; - var DEFAULT_ORIENTATION = properties.orientation; - orientation = DEFAULT_ORIENTATION; - } else { - // If the orientation is already defined, we perform the corresponding rotation assuming that - // our start referential is the avatar referential. - properties.orientation = Quat.multiply(MyAvatar.orientation, properties.orientation); - var DEFAULT_ORIENTATION = properties.orientation; - orientation = DEFAULT_ORIENTATION; - } - - position = adjustPositionPerBoundingBox(position, direction, registration, dimensions, orientation); - } - - position = grid.snapToSurface(grid.snapToGrid(position, false, dimensions), dimensions); - properties.position = position; - - if (!properties.grab) { - properties.grab = {}; - if (Menu.isOptionChecked(MENU_CREATE_ENTITIES_GRABBABLE) && - !(properties.type === "Zone" || properties.type === "Light" || properties.type === "ParticleEffect")) { - properties.grab.grabbable = true; - } else { - properties.grab.grabbable = false; - } - } - - entityID = Entities.addEntity(properties); - SelectionManager.addEntity(entityID, false, this); - SelectionManager.saveProperties(); - pushCommandForSelections([{ - entityID: entityID, - properties: properties - }], [], true); - - 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", "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(false, this); - } 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."); - } - - selectionManager.clearSelections(this); - entityListTool.sendUpdate(); - selectionManager.setSelections([entityID], this); - - Window.setFocus(); - - return entityID; - } - - function closeExistingDialogWindow() { - if (dialogWindow) { - dialogWindow.close(); - dialogWindow = null; - } - } - - function cleanup() { - that.setActive(false); - if (tablet) { - tablet.removeButton(activeButton); - } - if (systemToolbar) { - systemToolbar.removeButton(EDIT_TOGGLE_BUTTON); - } - } - - var buttonHandlers = {}; // only used to tablet mode - - function addButton(name, handler) { - buttonHandlers[name] = handler; - } - - var SHAPE_TYPE_NONE = 0; - var SHAPE_TYPE_SIMPLE_HULL = 1; - var SHAPE_TYPE_SIMPLE_COMPOUND = 2; - var SHAPE_TYPE_STATIC_MESH = 3; - var SHAPE_TYPE_BOX = 4; - var SHAPE_TYPE_SPHERE = 5; - var DYNAMIC_DEFAULT = false; - - var MATERIAL_MODE_UV = 0; - var MATERIAL_MODE_PROJECTED = 1; - - function handleNewModelDialogResult(result) { - if (result) { - var url = result.url; - var shapeType; - switch (result.collisionShapeIndex) { - case SHAPE_TYPE_SIMPLE_HULL: - shapeType = "simple-hull"; - break; - case SHAPE_TYPE_SIMPLE_COMPOUND: - shapeType = "simple-compound"; - break; - case SHAPE_TYPE_STATIC_MESH: - shapeType = "static-mesh"; - break; - case SHAPE_TYPE_BOX: - shapeType = "box"; - break; - case SHAPE_TYPE_SPHERE: - shapeType = "sphere"; - break; - default: - shapeType = "none"; - } - - var dynamic = result.dynamic !== null ? result.dynamic : DYNAMIC_DEFAULT; - if (shapeType === "static-mesh" && dynamic) { - // The prompt should prevent this case - print("Error: model cannot be both static mesh and dynamic. This should never happen."); - } else if (url) { - createNewEntity({ - type: "Model", - modelURL: url, - shapeType: shapeType, - grab: { - grabbable: result.grabbable - }, - dynamic: dynamic, - }); - } - } - } - - function handleNewMaterialDialogResult(result) { - if (result) { - var materialURL = result.textInput; - //var materialMappingMode; - //switch (result.comboBox) { - // case MATERIAL_MODE_PROJECTED: - // materialMappingMode = "projected"; - // break; - // default: - // shapeType = "uv"; - //} - var materialData = ""; - if (materialURL.startsWith("materialData")) { - materialData = JSON.stringify({ - "materials": {} - }); - } - - var DEFAULT_LAYERED_MATERIAL_PRIORITY = 1; - if (materialURL) { - createNewEntity({ - type: "Material", - materialURL: materialURL, - //materialMappingMode: materialMappingMode, - priority: DEFAULT_LAYERED_MATERIAL_PRIORITY, - materialData: materialData - }); - } - } - } - - function fromQml(message) { // messages are {method, params}, like json-rpc. See also sendToQml. - var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); - tablet.popFromStack(); - switch (message.method) { - case "newModelDialogAdd": - handleNewModelDialogResult(message.params); - closeExistingDialogWindow(); - break; - case "newModelDialogCancel": - closeExistingDialogWindow(); - break; - case "newEntityButtonClicked": - buttonHandlers[message.params.buttonName](); - break; - case "newMaterialDialogAdd": - handleNewMaterialDialogResult(message.params); - closeExistingDialogWindow(); - break; - case "newMaterialDialogCancel": - closeExistingDialogWindow(); - break; - } - } - - var entitiesToDelete = []; - var deletedEntityTimer = null; - var DELETE_ENTITY_TIMER_TIMEOUT = 100; - - function checkDeletedEntityAndUpdate(entityID) { - // Allow for multiple entity deletes before updating the entities selected. - entitiesToDelete.push(entityID); - if (deletedEntityTimer !== null) { - Script.clearTimeout(deletedEntityTimer); - } - deletedEntityTimer = Script.setTimeout(function () { - if (entitiesToDelete.length > 0) { - selectionManager.removeEntities(entitiesToDelete, this); - } - entityListTool.removeEntities(entitiesToDelete, selectionManager.selections); - entitiesToDelete = []; - deletedEntityTimer = null; - }, DELETE_ENTITY_TIMER_TIMEOUT); - } - - function initialize() { - Script.scriptEnding.connect(cleanup); - Window.domainChanged.connect(function () { - if (isActive) { - tablet.gotoHomeScreen(); - } - that.setActive(false); - that.clearEntityList(); - checkEditPermissionsAndUpdate(); - }); - - HMD.displayModeChanged.connect(function() { - if (isActive) { - tablet.gotoHomeScreen(); - } - that.setActive(false); - }); - - Entities.canAdjustLocksChanged.connect(function (canAdjustLocks) { - if (isActive && !canAdjustLocks) { - that.setActive(false); - } - checkEditPermissionsAndUpdate(); - }); - - Entities.canRezChanged.connect(checkEditPermissionsAndUpdate); - Entities.canRezTmpChanged.connect(checkEditPermissionsAndUpdate); - Entities.canRezCertifiedChanged.connect(checkEditPermissionsAndUpdate); - Entities.canRezTmpCertifiedChanged.connect(checkEditPermissionsAndUpdate); - var hasRezPermissions = (Entities.canRez() || Entities.canRezTmp() || Entities.canRezCertified() || Entities.canRezTmpCertified()); - - Entities.deletingEntity.connect(checkDeletedEntityAndUpdate); - - var createButtonIconRsrc = (hasRezPermissions ? CREATE_ENABLED_ICON : CREATE_DISABLED_ICON); - tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); - activeButton = tablet.addButton({ - captionColor: hasRezPermissions ? "#ffffff" : "#888888", - icon: createButtonIconRsrc, - activeIcon: "icons/tablet-icons/edit-a.svg", - text: "CREATE", - sortOrder: 10 - }); - createButton = activeButton; - tablet.screenChanged.connect(function (type, url) { - var isGoingToHomescreenOnDesktop = (!shouldUseEditTabletApp() && - (url === 'hifi/tablet/TabletHome.qml' || url === '')); - if (isActive && (type !== "QML" || url !== Script.resolvePath("qml/Edit.qml")) && !isGoingToHomescreenOnDesktop) { - that.setActive(false); - } - }); - tablet.fromQml.connect(fromQml); - createToolsWindow.fromQml.addListener(fromQml); - - createButton.clicked.connect(function() { - if ( ! (Entities.canRez() || Entities.canRezTmp() || Entities.canRezCertified() || Entities.canRezTmpCertified()) ) { - Window.notifyEditError(INSUFFICIENT_PERMISSIONS_ERROR_MSG); - return; - } - - that.toggle(); - }); - - addButton("importEntitiesButton", function() { - Window.browseChanged.connect(onFileOpenChanged); - Window.browseAsync("Select Model to Import", "", "*.json"); - }); - - addButton("openAssetBrowserButton", function() { - Window.showAssetServer(); - }); - function createNewEntityDialogButtonCallback(entityType) { - return function() { - if (shouldUseEditTabletApp()) { - // tablet version of new-model dialog - var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); - tablet.pushOntoStack(Script.resolvePath("qml/New" + entityType + "Dialog.qml")); - } else { - closeExistingDialogWindow(); - var qmlPath = Script.resolvePath("qml/New" + entityType + "Window.qml"); - var DIALOG_WINDOW_SIZE = { x: 500, y: 300 }; - dialogWindow = Desktop.createWindow(qmlPath, { - title: "New " + entityType + " Entity", - additionalFlags: Desktop.ALWAYS_ON_TOP | Desktop.CLOSE_BUTTON_HIDES, - presentationMode: Desktop.PresentationMode.NATIVE, - size: DIALOG_WINDOW_SIZE, - visible: true - }); - dialogWindow.fromQml.connect(fromQml); - } - }; - } - - addButton("newModelButton", createNewEntityDialogButtonCallback("Model")); - - addButton("newShapeButton", function () { - createNewEntity({ - type: "Shape", - shape: "Cube", - }); - }); - - addButton("newLightButton", function () { - createNewEntity({ - type: "Light", - }); - }); - - addButton("newTextButton", function () { - createNewEntity({ - type: "Text", - }); - }); - - addButton("newImageButton", function () { - createNewEntity({ - type: "Image", - }); - }); - - addButton("newWebButton", function () { - createNewEntity({ - type: "Web", - }); - }); - - addButton("newZoneButton", function () { - createNewEntity({ - type: "Zone", - }); - }); - - addButton("newParticleButton", function () { - createNewEntity({ - type: "ParticleEffect", - }); - }); - - addButton("newMaterialButton", createNewEntityDialogButtonCallback("Material")); - - var deactivateCreateIfDesktopWindowsHidden = function() { - if (!shouldUseEditTabletApp() && !entityListTool.isVisible() && !createToolsWindow.isVisible()) { - that.setActive(false); - } - }; - entityListTool.interactiveWindowHidden.addListener(this, deactivateCreateIfDesktopWindowsHidden); - createToolsWindow.interactiveWindowHidden.addListener(this, deactivateCreateIfDesktopWindowsHidden); - - that.setActive(false); - } - - that.clearEntityList = function () { - entityListTool.clearEntityList(); - }; - - that.toggle = function () { - that.setActive(!isActive); - if (!isActive) { - tablet.gotoHomeScreen(); - } - }; - - that.setActive = function (active) { - ContextOverlay.enabled = !active; - Settings.setValue(EDIT_SETTING, active); - if (active) { - Controller.captureEntityClickEvents(); - } else { - Controller.releaseEntityClickEvents(); - - closeExistingDialogWindow(); - } - if (active === isActive) { - return; - } - if (active && !Entities.canRez() && !Entities.canRezTmp() && !Entities.canRezCertified() && !Entities.canRezTmpCertified()) { - Window.notifyEditError(INSUFFICIENT_PERMISSIONS_ERROR_MSG); - return; - } - Messages.sendLocalMessage("edit-events", JSON.stringify({ - enabled: active - })); - isActive = active; - activeButton.editProperties({isActive: isActive}); - undoHistory.setEnabled(isActive); - - var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); - - if (!isActive) { - entityListTool.setVisible(false); - gridTool.setVisible(false); - grid.setEnabled(false); - propertiesTool.setVisible(false); - selectionManager.clearSelections(this); - cameraManager.disable(); - selectionDisplay.disableTriggerMapping(); - tablet.landscape = false; - Controller.disableMapping(CONTROLLER_MAPPING_NAME); - } else { - if (shouldUseEditTabletApp()) { - tablet.loadQMLSource(Script.resolvePath("qml/Edit.qml"), true); - } else { - // make other apps inactive while in desktop mode - tablet.gotoHomeScreen(); - } - UserActivityLogger.enabledEdit(); - entityListTool.setVisible(true); - entityListTool.sendUpdate(); - gridTool.setVisible(true); - grid.setEnabled(true); - propertiesTool.setVisible(true); - selectionDisplay.enableTriggerMapping(); - print("starting tablet in landscape mode"); - tablet.landscape = true; - Controller.enableMapping(CONTROLLER_MAPPING_NAME); - // 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(); - } - entityIconOverlayManager.setVisible(isActive && Menu.isOptionChecked(MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE)); - Entities.setDrawZoneBoundaries(isActive && Menu.isOptionChecked(MENU_SHOW_ZONES_IN_EDIT_MODE)); - }; - - initialize(); - return that; -})(); - -var selectedEntityID; -var orientation; -var intersection; - - -function rayPlaneIntersection(pickRay, point, normal) { // - // - // This version of the test returns the intersection of a line with a plane - // - var collides = Vec3.dot(pickRay.direction, normal); - - var d = -Vec3.dot(point, normal); - var t = -(Vec3.dot(pickRay.origin, normal) + d) / collides; - - return Vec3.sum(pickRay.origin, Vec3.multiply(pickRay.direction, t)); -} - -function rayPlaneIntersection2(pickRay, point, normal) { - // - // This version of the test returns false if the ray is directed away from the plane - // - var collides = Vec3.dot(pickRay.direction, normal); - var d = -Vec3.dot(point, normal); - var t = -(Vec3.dot(pickRay.origin, normal) + d) / collides; - if (t < 0.0) { - return false; - } else { - return Vec3.sum(pickRay.origin, Vec3.multiply(pickRay.direction, t)); - } -} - -function findClickedEntity(event) { - var pickZones = event.isControl; - - if (pickZones) { - Entities.setZonesArePickable(true); - } - - var pickRay = Camera.computePickRay(event.x, event.y); - var tabletIDs = getMainTabletIDs(); - if (tabletIDs.length > 0) { - var overlayResult = Overlays.findRayIntersection(pickRay, true, tabletIDs); - if (overlayResult.intersects) { - return null; - } - } - - var entityResult = Entities.findRayIntersection(pickRay, true); // want precision picking - var iconResult = entityIconOverlayManager.findRayIntersection(pickRay); - iconResult.accurate = true; - - if (pickZones) { - Entities.setZonesArePickable(false); - } - - var result; - - if (iconResult.intersects) { - result = iconResult; - } else if (entityResult.intersects) { - result = entityResult; - } else { - return null; - } - - if (!result.accurate) { - return null; - } - - var foundEntity = result.entityID; - return { - pickRay: pickRay, - entityID: foundEntity, - intersection: result.intersection - }; -} - -// Handles selections on overlays while in edit mode by querying entities from -// entityIconOverlayManager. -function handleOverlaySelectionToolUpdates(channel, message, sender) { - var wantDebug = false; - if (sender !== MyAvatar.sessionUUID || channel !== 'entityToolUpdates') - return; - - var data = JSON.parse(message); - - if (data.method === "selectOverlay") { - if (!selectionDisplay.triggered() || selectionDisplay.triggeredHand === data.hand) { - if (wantDebug) { - print("setting selection to overlay " + data.overlayID); - } - var entity = entityIconOverlayManager.findEntity(data.overlayID); - - if (entity !== null) { - selectionManager.setSelections([entity], this); - } - } - } -} - -function handleMessagesReceived(channel, message, sender) { - switch( channel ){ - case 'entityToolUpdates': { - handleOverlaySelectionToolUpdates( channel, message, sender ); - break; - } - default: { - return; - } - } -} - -Messages.subscribe("entityToolUpdates"); -Messages.messageReceived.connect(handleMessagesReceived); - -var mouseHasMovedSincePress = false; -var mousePressStartTime = 0; -var mousePressStartPosition = { - x: 0, - y: 0 -}; -var mouseDown = false; - -function mousePressEvent(event) { - mouseDown = true; - mousePressStartPosition = { - x: event.x, - y: event.y - }; - mousePressStartTime = Date.now(); - mouseHasMovedSincePress = false; - mouseCapturedByTool = false; - - if (propertyMenu.mousePressEvent(event) || progressDialog.mousePressEvent(event)) { - mouseCapturedByTool = true; - return; - } - if (isActive) { - if (cameraManager.mousePressEvent(event) || selectionDisplay.mousePressEvent(event)) { - // Event handled; do nothing. - return; - } - } -} - -var mouseCapturedByTool = false; -var lastMousePosition = null; -var CLICK_TIME_THRESHOLD = 500 * 1000; // 500 ms -var CLICK_MOVE_DISTANCE_THRESHOLD = 20; -var IDLE_MOUSE_TIMEOUT = 200; - -var lastMouseMoveEvent = null; - -function mouseMoveEventBuffered(event) { - lastMouseMoveEvent = event; -} - -function mouseMove(event) { - if (mouseDown && !mouseHasMovedSincePress) { - var timeSincePressMicro = Date.now() - mousePressStartTime; - - var dX = mousePressStartPosition.x - event.x; - var dY = mousePressStartPosition.y - event.y; - var sqDist = (dX * dX) + (dY * dY); - - // If less than CLICK_TIME_THRESHOLD has passed since the mouse click AND the mouse has moved - // less than CLICK_MOVE_DISTANCE_THRESHOLD distance, then don't register this as a mouse move - // yet. The goal is to provide mouse clicks that are more lenient to small movements. - if (timeSincePressMicro < CLICK_TIME_THRESHOLD && sqDist < CLICK_MOVE_DISTANCE_THRESHOLD) { - return; - } - mouseHasMovedSincePress = true; - } - - if (!isActive) { - return; - } - - // allow the selectionDisplay and cameraManager to handle the event first, if it doesn't handle it, then do our own thing - if (selectionDisplay.mouseMoveEvent(event) || propertyMenu.mouseMoveEvent(event) || cameraManager.mouseMoveEvent(event)) { - return; - } - - lastMousePosition = { - x: event.x, - y: event.y - }; -} - -function mouseReleaseEvent(event) { - mouseDown = false; - - if (lastMouseMoveEvent) { - mouseMove(lastMouseMoveEvent); - lastMouseMoveEvent = null; - } - if (propertyMenu.mouseReleaseEvent(event)) { - return true; - } - if (isActive && selectionManager.hasSelection()) { - tooltip.show(false); - } - if (mouseCapturedByTool) { - - return; - } - - cameraManager.mouseReleaseEvent(event); - - if (!mouseHasMovedSincePress) { - mouseClickEvent(event); - } -} - -function wasTabletOrEditHandleClicked(event) { - var rayPick = Camera.computePickRay(event.x, event.y); - var result = Overlays.findRayIntersection(rayPick, true); - if (result.intersects) { - var overlayID = result.overlayID; - var tabletIDs = getMainTabletIDs(); - if (tabletIDs.indexOf(overlayID) >= 0) { - return true; - } else if (selectionDisplay.isEditHandle(overlayID)) { - return true; - } - } - return false; -} - -function mouseClickEvent(event) { - var wantDebug = false; - var result, properties, tabletClicked; - if (isActive && event.isLeftButton) { - result = findClickedEntity(event); - var tabletOrEditHandleClicked = wasTabletOrEditHandleClicked(event); - if (tabletOrEditHandleClicked) { - return; - } - - if (result === null || result === undefined) { - if (!event.isShifted) { - selectionManager.clearSelections(this); - } - return; - } - toolBar.setActive(true); - var pickRay = result.pickRay; - var foundEntity = result.entityID; - if (HMD.tabletID && foundEntity === HMD.tabletID) { - return; - } - properties = Entities.getEntityProperties(foundEntity); - var halfDiagonal = Vec3.length(properties.dimensions) / 2.0; - - if (wantDebug) { - print("Checking properties: " + properties.id + " " + " - Half Diagonal:" + halfDiagonal); - } - // P P - Model - // /| A - Palm - // / | d B - unit vector toward tip - // / | X - base of the perpendicular line - // A---X----->B d - distance fom axis - // x x - distance from A - // - // |X-A| = (P-A).B - // X === A + ((P-A).B)B - // d = |P-X| - - var A = pickRay.origin; - var B = Vec3.normalize(pickRay.direction); - var P = properties.position; - - var x = Vec3.dot(Vec3.subtract(P, A), B); - - var angularSize = 2 * Math.atan(halfDiagonal / Vec3.distance(Camera.getPosition(), properties.position)) * - 180 / Math.PI; - - var sizeOK = (allowLargeModels || angularSize < MAX_ANGULAR_SIZE) && - (allowSmallModels || angularSize > MIN_ANGULAR_SIZE); - - if (0 < x && sizeOK) { - selectedEntityID = foundEntity; - orientation = MyAvatar.orientation; - intersection = rayPlaneIntersection(pickRay, P, Quat.getForward(orientation)); - - if (!event.isShifted) { - selectionManager.setSelections([foundEntity], this); - } else { - selectionManager.addEntity(foundEntity, true, this); - } - selectionManager.saveProperties(); - - if (wantDebug) { - print("Model selected: " + foundEntity); - } - selectionDisplay.select(selectedEntityID, event); - - if (Menu.isOptionChecked(MENU_AUTO_FOCUS_ON_SELECT)) { - cameraManager.enable(); - cameraManager.focus(selectionManager.worldPosition, - selectionManager.worldDimensions, - Menu.isOptionChecked(MENU_EASE_ON_FOCUS)); - } - } - } else if (event.isRightButton) { - result = findClickedEntity(event); - if (result) { - if (SHOULD_SHOW_PROPERTY_MENU !== true) { - return; - } - properties = Entities.getEntityProperties(result.entityID); - if (properties.marketplaceID) { - propertyMenu.marketplaceID = properties.marketplaceID; - propertyMenu.updateMenuItemText(showMenuItem, "Show in Marketplace"); - } else { - propertyMenu.marketplaceID = null; - propertyMenu.updateMenuItemText(showMenuItem, "No marketplace info"); - } - propertyMenu.setPosition(event.x, event.y); - propertyMenu.show(); - } else { - propertyMenu.hide(); - } - } -} - -Controller.mousePressEvent.connect(mousePressEvent); -Controller.mouseMoveEvent.connect(mouseMoveEventBuffered); -Controller.mouseReleaseEvent.connect(mouseReleaseEvent); - - -// In order for editVoxels and editModels to play nice together, they each check to see if a "delete" menu item already -// exists. If it doesn't they add it. If it does they don't. They also only delete the menu item if they were the one that -// added it. -var modelMenuAddedDelete = false; -var originalLightsArePickable = Entities.getLightsArePickable(); - -function setupModelMenus() { - // adj our menuitems - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: "Undo", - shortcutKey: 'Ctrl+Z', - position: 0, - }); - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: "Redo", - shortcutKey: 'Ctrl+Y', - position: 1, - }); - - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: "Entities", - isSeparator: true - }); - if (!Menu.menuItemExists("Edit", "Delete")) { - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: "Delete", - shortcutKeyEvent: { - text: "delete" - }, - afterItem: "Entities", - }); - modelMenuAddedDelete = true; - } - - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: "Parent Entity to Last", - afterItem: "Entities" - }); - - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: "Unparent Entity", - afterItem: "Parent Entity to Last" - }); - - Menu.addMenuItem({ - menuName: GRABBABLE_ENTITIES_MENU_CATEGORY, - menuItemName: MENU_CREATE_ENTITIES_GRABBABLE, - afterItem: "Unparent Entity", - isCheckable: true, - isChecked: Settings.getValue(SETTING_EDIT_PREFIX + MENU_CREATE_ENTITIES_GRABBABLE, true) - }); - - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: MENU_ALLOW_SELECTION_LARGE, - afterItem: MENU_CREATE_ENTITIES_GRABBABLE, - isCheckable: true, - isChecked: Settings.getValue(SETTING_EDIT_PREFIX + MENU_ALLOW_SELECTION_LARGE, true) - }); - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: MENU_ALLOW_SELECTION_SMALL, - afterItem: MENU_ALLOW_SELECTION_LARGE, - isCheckable: true, - isChecked: Settings.getValue(SETTING_EDIT_PREFIX + MENU_ALLOW_SELECTION_SMALL, true) - }); - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: MENU_ALLOW_SELECTION_LIGHTS, - afterItem: MENU_ALLOW_SELECTION_SMALL, - isCheckable: true, - isChecked: Settings.getValue(SETTING_EDIT_PREFIX + MENU_ALLOW_SELECTION_LIGHTS, false) - }); - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: "Select All Entities In Box", - afterItem: "Allow Selecting of Lights" - }); - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: "Select All Entities Touching Box", - afterItem: "Select All Entities In Box" - }); - - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: "Export Entities", - afterItem: "Entities" - }); - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: "Import Entities", - afterItem: "Export Entities" - }); - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: "Import Entities from URL", - afterItem: "Import Entities" - }); - - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: MENU_AUTO_FOCUS_ON_SELECT, - isCheckable: true, - isChecked: Settings.getValue(SETTING_AUTO_FOCUS_ON_SELECT) === "true" - }); - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: MENU_EASE_ON_FOCUS, - afterItem: MENU_AUTO_FOCUS_ON_SELECT, - isCheckable: true, - isChecked: Settings.getValue(SETTING_EASE_ON_FOCUS) === "true" - }); - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE, - afterItem: MENU_EASE_ON_FOCUS, - isCheckable: true, - isChecked: Settings.getValue(SETTING_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE) !== "false" - }); - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: MENU_SHOW_ZONES_IN_EDIT_MODE, - afterItem: MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE, - isCheckable: true, - isChecked: Settings.getValue(SETTING_SHOW_ZONES_IN_EDIT_MODE) !== "false" - }); - - Entities.setLightsArePickable(false); -} - -setupModelMenus(); // do this when first running our script. - -function cleanupModelMenus() { - Menu.removeMenuItem("Edit", "Undo"); - Menu.removeMenuItem("Edit", "Redo"); - - Menu.removeSeparator("Edit", "Entities"); - if (modelMenuAddedDelete) { - // delete our menuitems - Menu.removeMenuItem("Edit", "Delete"); - } - - Menu.removeMenuItem("Edit", "Parent Entity to Last"); - Menu.removeMenuItem("Edit", "Unparent Entity"); - Menu.removeMenuItem("Edit", "Allow Selecting of Large Models"); - Menu.removeMenuItem("Edit", "Allow Selecting of Small Models"); - Menu.removeMenuItem("Edit", "Allow Selecting of Lights"); - Menu.removeMenuItem("Edit", "Select All Entities In Box"); - Menu.removeMenuItem("Edit", "Select All Entities Touching Box"); - - Menu.removeMenuItem("Edit", "Export Entities"); - Menu.removeMenuItem("Edit", "Import Entities"); - Menu.removeMenuItem("Edit", "Import Entities from URL"); - - Menu.removeMenuItem("Edit", MENU_AUTO_FOCUS_ON_SELECT); - Menu.removeMenuItem("Edit", MENU_EASE_ON_FOCUS); - Menu.removeMenuItem("Edit", MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE); - Menu.removeMenuItem("Edit", MENU_SHOW_ZONES_IN_EDIT_MODE); - Menu.removeMenuItem("Edit", MENU_CREATE_ENTITIES_GRABBABLE); -} - -Script.scriptEnding.connect(function () { - toolBar.setActive(false); - Settings.setValue(SETTING_AUTO_FOCUS_ON_SELECT, Menu.isOptionChecked(MENU_AUTO_FOCUS_ON_SELECT)); - Settings.setValue(SETTING_EASE_ON_FOCUS, Menu.isOptionChecked(MENU_EASE_ON_FOCUS)); - Settings.setValue(SETTING_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE, Menu.isOptionChecked(MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE)); - Settings.setValue(SETTING_SHOW_ZONES_IN_EDIT_MODE, Menu.isOptionChecked(MENU_SHOW_ZONES_IN_EDIT_MODE)); - - Settings.setValue(SETTING_EDIT_PREFIX + MENU_ALLOW_SELECTION_LARGE, Menu.isOptionChecked(MENU_ALLOW_SELECTION_LARGE)); - Settings.setValue(SETTING_EDIT_PREFIX + MENU_ALLOW_SELECTION_SMALL, Menu.isOptionChecked(MENU_ALLOW_SELECTION_SMALL)); - Settings.setValue(SETTING_EDIT_PREFIX + MENU_ALLOW_SELECTION_LIGHTS, Menu.isOptionChecked(MENU_ALLOW_SELECTION_LIGHTS)); - - - progressDialog.cleanup(); - cleanupModelMenus(); - tooltip.cleanup(); - selectionDisplay.cleanup(); - entityShapeVisualizer.cleanup(); - Entities.setLightsArePickable(originalLightsArePickable); - - Overlays.deleteOverlay(importingSVOImageOverlay); - Overlays.deleteOverlay(importingSVOTextOverlay); - - Controller.keyReleaseEvent.disconnect(keyReleaseEvent); - Controller.keyPressEvent.disconnect(keyPressEvent); - - Controller.mousePressEvent.disconnect(mousePressEvent); - Controller.mouseMoveEvent.disconnect(mouseMoveEventBuffered); - Controller.mouseReleaseEvent.disconnect(mouseReleaseEvent); - - Messages.messageReceived.disconnect(handleMessagesReceived); - Messages.unsubscribe("entityToolUpdates"); - createButton = null; -}); - -var lastOrientation = null; -var lastPosition = null; - -// Do some stuff regularly, like check for placement of various overlays -Script.update.connect(function (deltaTime) { - progressDialog.move(); - selectionDisplay.checkControllerMove(); - var dOrientation = Math.abs(Quat.dot(Camera.orientation, lastOrientation) - 1); - var dPosition = Vec3.distance(Camera.position, lastPosition); - if (dOrientation > 0.001 || dPosition > 0.001) { - propertyMenu.hide(); - lastOrientation = Camera.orientation; - lastPosition = Camera.position; - } - if (lastMouseMoveEvent) { - mouseMove(lastMouseMoveEvent); - lastMouseMoveEvent = null; - } -}); - -function insideBox(center, dimensions, point) { - return (Math.abs(point.x - center.x) <= (dimensions.x / 2.0)) && - (Math.abs(point.y - center.y) <= (dimensions.y / 2.0)) && - (Math.abs(point.z - center.z) <= (dimensions.z / 2.0)); -} - -function selectAllEntitiesInCurrentSelectionBox(keepIfTouching) { - if (selectionManager.hasSelection()) { - // Get all entities touching the bounding box of the current selection - var boundingBoxCorner = Vec3.subtract(selectionManager.worldPosition, - Vec3.multiply(selectionManager.worldDimensions, 0.5)); - var entities = Entities.findEntitiesInBox(boundingBoxCorner, selectionManager.worldDimensions); - - if (!keepIfTouching) { - var isValid; - if (selectionManager.localPosition === null || selectionManager.localPosition === undefined) { - isValid = function (position) { - return insideBox(selectionManager.worldPosition, selectionManager.worldDimensions, position); - }; - } else { - isValid = function (position) { - var localPosition = Vec3.multiplyQbyV(Quat.inverse(selectionManager.localRotation), - Vec3.subtract(position, - selectionManager.localPosition)); - return insideBox(Vec3.ZERO, selectionManager.localDimensions, localPosition); - }; - } - for (var i = 0; i < entities.length; ++i) { - var properties = Entities.getEntityProperties(entities[i]); - if (!isValid(properties.position)) { - entities.splice(i, 1); - --i; - } - } - } - selectionManager.setSelections(entities, this); - } -} - -function sortSelectedEntities(selected) { - var sortedEntities = selected.slice(); - var begin = 0; - while (begin < sortedEntities.length) { - var elementRemoved = false; - var next = begin + 1; - while (next < sortedEntities.length) { - var beginID = sortedEntities[begin]; - var nextID = sortedEntities[next]; - - if (Entities.isChildOfParent(beginID, nextID)) { - sortedEntities[begin] = nextID; - sortedEntities[next] = beginID; - sortedEntities.splice(next, 1); - elementRemoved = true; - break; - } else if (Entities.isChildOfParent(nextID, beginID)) { - sortedEntities.splice(next, 1); - elementRemoved = true; - break; - } - next++; - } - if (!elementRemoved) { - begin++; - } - } - return sortedEntities; -} - -function recursiveDelete(entities, childrenList, deletedIDs, entityHostType) { - var wantDebug = false; - var entitiesLength = entities.length; - var initialPropertySets = Entities.getMultipleEntityProperties(entities); - var entityHostTypes = Entities.getMultipleEntityProperties(entities, 'entityHostType'); - for (var i = 0; i < entitiesLength; ++i) { - var entityID = entities[i]; - - if (entityHostTypes[i].entityHostType !== entityHostType) { - if (wantDebug) { - console.log("Skipping deletion of entity " + entityID + " with conflicting entityHostType: " + - entityHostTypes[i].entityHostType + ", expected: " + entityHostType); - } - continue; - } - - var children = Entities.getChildrenIDs(entityID); - var grandchildrenList = []; - recursiveDelete(children, grandchildrenList, deletedIDs, entityHostType); - childrenList.push({ - entityID: entityID, - properties: initialPropertySets[i], - children: grandchildrenList - }); - deletedIDs.push(entityID); - Entities.deleteEntity(entityID); - } -} - -function unparentSelectedEntities() { - if (SelectionManager.hasSelection()) { - var selectedEntities = selectionManager.selections; - var parentCheck = false; - - if (selectedEntities.length < 1) { - Window.notifyEditError("You must have an entity selected in order to unparent it."); - return; - } - selectedEntities.forEach(function (id, index) { - var parentId = Entities.getEntityProperties(id, ["parentID"]).parentID; - if (parentId !== null && parentId.length > 0 && parentId !== Uuid.NULL) { - parentCheck = true; - } - Entities.editEntity(id, {parentID: null}); - return true; - }); - if (parentCheck) { - if (selectedEntities.length > 1) { - Window.notify("Entities unparented"); - } else { - Window.notify("Entity unparented"); - } - } else { - if (selectedEntities.length > 1) { - Window.notify("Selected Entities have no parents"); - } else { - Window.notify("Selected Entity does not have a parent"); - } - } - } else { - Window.notifyEditError("You have nothing selected to unparent"); - } -} -function parentSelectedEntities() { - if (SelectionManager.hasSelection()) { - var selectedEntities = selectionManager.selections; - if (selectedEntities.length <= 1) { - Window.notifyEditError("You must have multiple entities selected in order to parent them"); - return; - } - var parentCheck = false; - var lastEntityId = selectedEntities[selectedEntities.length - 1]; - selectedEntities.forEach(function (id, index) { - if (lastEntityId !== id) { - var parentId = Entities.getEntityProperties(id, ["parentID"]).parentID; - if (parentId !== lastEntityId) { - parentCheck = true; - } - Entities.editEntity(id, {parentID: lastEntityId}); - } - }); - - if (parentCheck) { - Window.notify("Entities parented"); - } else { - Window.notify("Entities are already parented to last"); - } - } else { - Window.notifyEditError("You have nothing selected to parent"); - } -} -function deleteSelectedEntities() { - if (SelectionManager.hasSelection()) { - var deletedIDs = []; - - SelectionManager.saveProperties(); - var savedProperties = []; - var newSortedSelection = sortSelectedEntities(selectionManager.selections); - var entityHostTypes = Entities.getMultipleEntityProperties(newSortedSelection, 'entityHostType'); - for (var i = 0; i < newSortedSelection.length; ++i) { - var entityID = newSortedSelection[i]; - var initialProperties = SelectionManager.savedProperties[entityID]; - if (initialProperties.locked || - (initialProperties.avatarEntity && initialProperties.owningAvatarID !== MyAvatar.sessionUUID)) { - continue; - } - var children = Entities.getChildrenIDs(entityID); - var childList = []; - recursiveDelete(children, childList, deletedIDs, entityHostTypes[i].entityHostType); - savedProperties.push({ - entityID: entityID, - properties: initialProperties, - children: childList - }); - deletedIDs.push(entityID); - Entities.deleteEntity(entityID); - } - - if (savedProperties.length > 0) { - SelectionManager.clearSelections(this); - pushCommandForSelections([], savedProperties); - entityListTool.deleteEntities(deletedIDs); - } - } -} - -function toggleSelectedEntitiesLocked() { - if (SelectionManager.hasSelection()) { - var locked = !Entities.getEntityProperties(SelectionManager.selections[0], ["locked"]).locked; - for (var i = 0; i < selectionManager.selections.length; i++) { - var entityID = SelectionManager.selections[i]; - Entities.editEntity(entityID, { - locked: locked - }); - } - entityListTool.sendUpdate(); - selectionManager._update(false, this); - } -} - -function toggleSelectedEntitiesVisible() { - if (SelectionManager.hasSelection()) { - var visible = !Entities.getEntityProperties(SelectionManager.selections[0], ["visible"]).visible; - for (var i = 0; i < selectionManager.selections.length; i++) { - var entityID = SelectionManager.selections[i]; - Entities.editEntity(entityID, { - visible: visible - }); - } - entityListTool.sendUpdate(); - selectionManager._update(false, this); - } -} - -function onFileSaveChanged(filename) { - Window.saveFileChanged.disconnect(onFileSaveChanged); - if (filename !== "") { - var success = Clipboard.exportEntities(filename, selectionManager.selections); - if (!success) { - Window.notifyEditError("Export failed."); - } - } -} - -function onFileOpenChanged(filename) { - // disconnect the event, otherwise the requests will stack up - try { - // Not all calls to onFileOpenChanged() connect an event. - Window.browseChanged.disconnect(onFileOpenChanged); - } catch (e) { - // Ignore. - } - - var importURL = null; - if (filename !== "") { - importURL = filename; - if (!/^(http|https):\/\//.test(filename)) { - importURL = "file:///" + importURL; - } - } - if (importURL) { - if (!isActive && (Entities.canRez() && Entities.canRezTmp() && Entities.canRezCertified() && Entities.canRezTmpCertified())) { - toolBar.toggle(); - } - importSVO(importURL); - } -} - -function onPromptTextChanged(prompt) { - Window.promptTextChanged.disconnect(onPromptTextChanged); - if (prompt !== "") { - if (!isActive && (Entities.canRez() && Entities.canRezTmp() && Entities.canRezCertified() && Entities.canRezTmpCertified())) { - toolBar.toggle(); - } - importSVO(prompt); - } -} - -function handleMenuEvent(menuItem) { - if (menuItem === "Allow Selecting of Small Models") { - allowSmallModels = Menu.isOptionChecked("Allow Selecting of Small Models"); - } else if (menuItem === "Allow Selecting of Large Models") { - allowLargeModels = Menu.isOptionChecked("Allow Selecting of Large Models"); - } else if (menuItem === "Allow Selecting of Lights") { - Entities.setLightsArePickable(Menu.isOptionChecked("Allow Selecting of Lights")); - } else if (menuItem === "Delete") { - deleteSelectedEntities(); - } else if (menuItem === "Undo") { - undoHistory.undo(); - } else if (menuItem === "Redo") { - undoHistory.redo(); - } else if (menuItem === "Parent Entity to Last") { - parentSelectedEntities(); - } else if (menuItem === "Unparent Entity") { - unparentSelectedEntities(); - } else if (menuItem === "Export Entities") { - if (!selectionManager.hasSelection()) { - Window.notifyEditError("No entities have been selected."); - } else { - Window.saveFileChanged.connect(onFileSaveChanged); - Window.saveAsync("Select Where to Save", "", "*.json"); - } - } else if (menuItem === "Import Entities" || menuItem === "Import Entities from URL") { - if (menuItem === "Import Entities") { - Window.browseChanged.connect(onFileOpenChanged); - Window.browseAsync("Select Model to Import", "", "*.json"); - } else { - Window.promptTextChanged.connect(onPromptTextChanged); - Window.promptAsync("URL of SVO to import", ""); - } - } else if (menuItem === "Select All Entities In Box") { - selectAllEntitiesInCurrentSelectionBox(false); - } else if (menuItem === "Select All Entities Touching Box") { - selectAllEntitiesInCurrentSelectionBox(true); - } else if (menuItem === MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE) { - entityIconOverlayManager.setVisible(isActive && Menu.isOptionChecked(MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE)); - } else if (menuItem === MENU_SHOW_ZONES_IN_EDIT_MODE) { - Entities.setDrawZoneBoundaries(isActive && Menu.isOptionChecked(MENU_SHOW_ZONES_IN_EDIT_MODE)); - } else if (menuItem === MENU_CREATE_ENTITIES_GRABBABLE) { - Settings.setValue(SETTING_EDIT_PREFIX + menuItem, Menu.isOptionChecked(menuItem)); - } - tooltip.show(false); -} - -var HALF_TREE_SCALE = 16384; - -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 + delta)); - } else { - position = Vec3.sum(MyAvatar.position, Vec3.multiply(Quat.getForward(MyAvatar.orientation), CREATE_DISTANCE + delta)); - } - - if (position.x > HALF_TREE_SCALE || position.y > HALF_TREE_SCALE || position.z > HALF_TREE_SCALE) { - return null; - } - return position; -} - -function importSVO(importURL) { - if (!Entities.canRez() && !Entities.canRezTmp() && - !Entities.canRezCertified() && !Entities.canRezTmpCertified()) { - Window.notifyEditError(INSUFFICIENT_PERMISSIONS_IMPORT_ERROR_MSG); - return; - } - - Overlays.editOverlay(importingSVOTextOverlay, { - visible: true - }); - Overlays.editOverlay(importingSVOImageOverlay, { - visible: true - }); - - var success = Clipboard.importEntities(importURL); - - if (success) { - var VERY_LARGE = 10000; - var isLargeImport = Clipboard.getClipboardContentsLargestDimension() >= VERY_LARGE; - var position = Vec3.ZERO; - if (!isLargeImport) { - position = getPositionToCreateEntity(Clipboard.getClipboardContentsLargestDimension() / 2); - } - 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 deltaPosition = Vec3.ZERO; - var entityPositions = []; - var entityParentIDs = []; - - var propType = Entities.getEntityProperties(pastedEntityIDs[0], ["type"]).type; - var NO_ADJUST_ENTITY_TYPES = ["Zone", "Light", "ParticleEffect"]; - if (NO_ADJUST_ENTITY_TYPES.indexOf(propType) === -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. - for (var i = 0, length = pastedEntityIDs.length; i < length; i++) { - var curLoopEntityProps = Entities.getEntityProperties(pastedEntityIDs[i], ["position", "dimensions", - "registrationPoint", "rotation", "parentID"]); - var adjustedPosition = adjustPositionPerBoundingBox(targetPosition, targetDirection, - curLoopEntityProps.registrationPoint, curLoopEntityProps.dimensions, curLoopEntityProps.rotation); - var delta = Vec3.subtract(adjustedPosition, curLoopEntityProps.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] = curLoopEntityProps.position; - entityParentIDs[i] = curLoopEntityProps.parentID; - } - deltaPerpendicular = Vec3.multiply(1 / pastedEntityIDs.length, deltaPerpendicular); - deltaPosition = Vec3.sum(Vec3.multiply(deltaParallel, targetDirection), deltaPerpendicular); - } - - if (grid.getSnapToGrid()) { - var firstEntityProps = Entities.getEntityProperties(pastedEntityIDs[0], ["position", "dimensions", - "registrationPoint"]); - var positionPreSnap = Vec3.sum(deltaPosition, firstEntityProps.position); - position = grid.snapToSurface(grid.snapToGrid(positionPreSnap, false, firstEntityProps.dimensions, - firstEntityProps.registrationPoint), firstEntityProps.dimensions, firstEntityProps.registrationPoint); - deltaPosition = Vec3.subtract(position, firstEntityProps.position); - } - - if (!Vec3.equal(deltaPosition, Vec3.ZERO)) { - for (var editEntityIndex = 0, numEntities = pastedEntityIDs.length; editEntityIndex < numEntities; editEntityIndex++) { - if (Uuid.isNull(entityParentIDs[editEntityIndex])) { - Entities.editEntity(pastedEntityIDs[editEntityIndex], { - position: Vec3.sum(deltaPosition, entityPositions[editEntityIndex]) - }); - } - } - } - } - - if (isActive) { - selectionManager.setSelections(pastedEntityIDs, this); - } - } else { - Window.notifyEditError("Can't import entities: entities would be out of bounds."); - } - } else { - Window.notifyEditError("There was an error importing the entity file."); - } - - Overlays.editOverlay(importingSVOTextOverlay, { - visible: false - }); - Overlays.editOverlay(importingSVOImageOverlay, { - visible: false - }); -} -Window.svoImportRequested.connect(importSVO); - -Menu.menuItemEvent.connect(handleMenuEvent); - -var keyPressEvent = function (event) { - if (isActive) { - cameraManager.keyPressEvent(event); - } -}; -var keyReleaseEvent = function (event) { - if (isActive) { - cameraManager.keyReleaseEvent(event); - } -}; -Controller.keyReleaseEvent.connect(keyReleaseEvent); -Controller.keyPressEvent.connect(keyPressEvent); - -function deleteKey(value) { - if (value === 0) { // on release - deleteSelectedEntities(); - } -} -function deselectKey(value) { - if (value === 0) { // on release - selectionManager.clearSelections(this); - } -} -function toggleKey(value) { - if (value === 0) { // on release - selectionDisplay.toggleSpaceMode(); - } -} -function focusKey(value) { - if (value === 0) { // on release - cameraManager.enable(); - if (selectionManager.hasSelection()) { - cameraManager.focus(selectionManager.worldPosition, selectionManager.worldDimensions, - Menu.isOptionChecked(MENU_EASE_ON_FOCUS)); - } - } -} -function gridKey(value) { - if (value === 0) { // on release - if (selectionManager.hasSelection()) { - grid.moveToSelection(); - } - } -} -function recursiveAdd(newParentID, parentData) { - if (parentData.children !== undefined) { - var children = parentData.children; - for (var i = 0; i < children.length; i++) { - var childProperties = children[i].properties; - childProperties.parentID = newParentID; - var newChildID = Entities.addEntity(childProperties); - recursiveAdd(newChildID, children[i]); - } - } -} - -var UndoHistory = function(onUpdate) { - this.history = []; - // The current position is the index of the last executed action in the history array. - // - // -1 0 1 2 3 <- position - // A B C D <- actions in history - // - // If our lastExecutedIndex is 1, the last executed action is B. - // If we undo, we undo B (index 1). If we redo, we redo C (index 2). - this.lastExecutedIndex = -1; - this.enabled = true; - this.onUpdate = onUpdate; -}; - -UndoHistory.prototype.pushCommand = function(undoFn, undoArgs, redoFn, redoArgs) { - if (!this.enabled) { - return; - } - // Delete any history following the last executed action. - this.history.splice(this.lastExecutedIndex + 1); - this.history.push({ - undoFn: undoFn, - undoArgs: undoArgs, - redoFn: redoFn, - redoArgs: redoArgs - }); - this.lastExecutedIndex++; - - if (this.onUpdate) { - this.onUpdate(); - } -}; -UndoHistory.prototype.setEnabled = function(enabled) { - this.enabled = enabled; - if (this.onUpdate) { - this.onUpdate(); - } -}; -UndoHistory.prototype.canUndo = function() { - return this.enabled && this.lastExecutedIndex >= 0; -}; -UndoHistory.prototype.canRedo = function() { - return this.enabled && this.lastExecutedIndex < this.history.length - 1; -}; -UndoHistory.prototype.undo = function() { - if (!this.canUndo()) { - console.warn("Cannot undo action"); - return; - } - - var command = this.history[this.lastExecutedIndex]; - command.undoFn(command.undoArgs); - this.lastExecutedIndex--; - - if (this.onUpdate) { - this.onUpdate(); - } -}; -UndoHistory.prototype.redo = function() { - if (!this.canRedo()) { - console.warn("Cannot redo action"); - return; - } - - var command = this.history[this.lastExecutedIndex + 1]; - command.redoFn(command.redoArgs); - this.lastExecutedIndex++; - - if (this.onUpdate) { - this.onUpdate(); - } -}; - -function updateUndoRedoMenuItems() { - Menu.setMenuEnabled("Edit > Undo", undoHistory.canUndo()); - Menu.setMenuEnabled("Edit > Redo", undoHistory.canRedo()); -} -var undoHistory = new UndoHistory(updateUndoRedoMenuItems); -updateUndoRedoMenuItems(); - -// When an entity has been deleted we need a way to "undo" this deletion. Because it's not currently -// possible to create an entity with a specific id, earlier undo commands to the deleted entity -// will fail if there isn't a way to find the new entity id. -var DELETED_ENTITY_MAP = {}; - -function applyEntityProperties(data) { - var editEntities = data.editEntities; - var createEntities = data.createEntities; - var deleteEntities = data.deleteEntities; - var selectedEntityIDs = []; - var selectEdits = createEntities.length === 0 || !data.selectCreated; - var i, entityID, entityProperties; - for (i = 0; i < createEntities.length; i++) { - entityID = createEntities[i].entityID; - entityProperties = createEntities[i].properties; - var newEntityID = Entities.addEntity(entityProperties); - recursiveAdd(newEntityID, createEntities[i]); - DELETED_ENTITY_MAP[entityID] = newEntityID; - if (data.selectCreated) { - selectedEntityIDs.push(newEntityID); - } - } - for (i = 0; i < deleteEntities.length; i++) { - entityID = deleteEntities[i].entityID; - if (DELETED_ENTITY_MAP[entityID] !== undefined) { - entityID = DELETED_ENTITY_MAP[entityID]; - } - Entities.deleteEntity(entityID); - var index = selectedEntityIDs.indexOf(entityID); - if (index >= 0) { - selectedEntityIDs.splice(index, 1); - } - } - for (i = 0; i < editEntities.length; i++) { - entityID = editEntities[i].entityID; - if (DELETED_ENTITY_MAP[entityID] !== undefined) { - entityID = DELETED_ENTITY_MAP[entityID]; - } - entityProperties = editEntities[i].properties; - if (entityProperties !== null) { - Entities.editEntity(entityID, entityProperties); - } - if (selectEdits) { - selectedEntityIDs.push(entityID); - } - } - - // We might be getting an undo while edit.js is disabled. If that is the case, don't set - // our selections, causing the edit widgets to display. - if (isActive) { - selectionManager.setSelections(selectedEntityIDs, this); - selectionManager.saveProperties(); - } -} - -// For currently selected entities, push a command to the UndoStack that uses the current entity properties for the -// redo command, and the saved properties for the undo command. Also, include create and delete entity data. -function pushCommandForSelections(createdEntityData, deletedEntityData, doNotSaveEditProperties) { - doNotSaveEditProperties = false; - var undoData = { - editEntities: [], - createEntities: deletedEntityData || [], - deleteEntities: createdEntityData || [], - selectCreated: true - }; - var redoData = { - editEntities: [], - createEntities: createdEntityData || [], - deleteEntities: deletedEntityData || [], - selectCreated: true - }; - for (var i = 0; i < SelectionManager.selections.length; i++) { - var entityID = SelectionManager.selections[i]; - var initialProperties = SelectionManager.savedProperties[entityID]; - var currentProperties = null; - if (!initialProperties) { - continue; - } - - if (doNotSaveEditProperties) { - initialProperties = null; - } else { - currentProperties = Entities.getEntityProperties(entityID); - } - - undoData.editEntities.push({ - entityID: entityID, - properties: initialProperties - }); - redoData.editEntities.push({ - entityID: entityID, - properties: currentProperties - }); - } - undoHistory.pushCommand(applyEntityProperties, undoData, applyEntityProperties, redoData); -} - -var ServerScriptStatusMonitor = function(entityID, statusCallback) { - var self = this; - - self.entityID = entityID; - self.active = true; - self.sendRequestTimerID = null; - - var onStatusReceived = function(success, isRunning, status, errorInfo) { - if (self.active) { - statusCallback({ - statusRetrieved: success, - isRunning: isRunning, - status: status, - errorInfo: errorInfo - }); - self.sendRequestTimerID = Script.setTimeout(function() { - if (self.active) { - Entities.getServerScriptStatus(entityID, onStatusReceived); - } - }, 1000); - } - }; - self.stop = function() { - self.active = false; - }; - - Entities.getServerScriptStatus(entityID, onStatusReceived); -}; - -var PropertiesTool = function (opts) { - var that = {}; - - var webView = null; - webView = Tablet.getTablet("com.highfidelity.interface.tablet.system"); - webView.setVisible = function(value) {}; - - var visible = false; - - // This keeps track of the last entity ID that was selected. If multiple entities - // are selected or if no entity is selected this will be `null`. - var currentSelectedEntityID = null; - var statusMonitor = null; - var blockPropertyUpdates = false; - - that.setVisible = function (newVisible) { - visible = newVisible; - webView.setVisible(shouldUseEditTabletApp() && visible); - createToolsWindow.setVisible(!shouldUseEditTabletApp() && visible); - }; - - that.setVisible(false); - - function emitScriptEvent(data) { - var dataString = JSON.stringify(data); - webView.emitScriptEvent(dataString); - createToolsWindow.emitScriptEvent(dataString); - } - - function updateScriptStatus(info) { - info.type = "server_script_status"; - emitScriptEvent(info); - } - - function resetScriptStatus() { - updateScriptStatus({ - statusRetrieved: undefined, - isRunning: undefined, - status: "", - errorInfo: "" - }); - } - - that.setSpaceMode = function(spaceMode) { - emitScriptEvent({ - type: 'setSpaceMode', - spaceMode: spaceMode - }) - }; - - function updateSelections(selectionUpdated, caller) { - if (blockPropertyUpdates) { - return; - } - - var data = { - type: 'update', - spaceMode: selectionDisplay.getSpaceMode(), - isPropertiesToolUpdate: caller === this, - }; - - if (selectionUpdated) { - resetScriptStatus(); - - if (selectionManager.selections.length !== 1) { - if (statusMonitor !== null) { - statusMonitor.stop(); - statusMonitor = null; - } - currentSelectedEntityID = null; - } else if (currentSelectedEntityID !== selectionManager.selections[0]) { - if (statusMonitor !== null) { - statusMonitor.stop(); - } - var entityID = selectionManager.selections[0]; - currentSelectedEntityID = entityID; - statusMonitor = new ServerScriptStatusMonitor(entityID, updateScriptStatus); - } - } - - var selections = []; - for (var i = 0; i < selectionManager.selections.length; i++) { - var entity = {}; - entity.id = selectionManager.selections[i]; - entity.properties = Entities.getEntityProperties(selectionManager.selections[i]); - if (entity.properties.rotation !== undefined) { - entity.properties.rotation = Quat.safeEulerAngles(entity.properties.rotation); - } - if (entity.properties.localRotation !== undefined) { - entity.properties.localRotation = Quat.safeEulerAngles(entity.properties.localRotation); - } - if (entity.properties.emitOrientation !== undefined) { - entity.properties.emitOrientation = Quat.safeEulerAngles(entity.properties.emitOrientation); - } - if (entity.properties.keyLight !== undefined && entity.properties.keyLight.direction !== undefined) { - entity.properties.keyLight.direction = Vec3.toPolar(entity.properties.keyLight.direction); - entity.properties.keyLight.direction.z = 0.0; - } - selections.push(entity); - } - data.selections = selections; - - emitScriptEvent(data); - } - selectionManager.addEventListener(updateSelections, this); - - - var onWebEventReceived = function(data) { - try { - data = JSON.parse(data); - } catch(e) { - return; - } - var i, properties, dY, diff, newPosition; - if (data.type === "update") { - - if (data.properties || data.propertiesMap) { - var propertiesMap = data.propertiesMap; - if (propertiesMap === undefined) { - propertiesMap = [{ - entityIDs: data.ids, - properties: data.properties, - }]; - } - - var sendListUpdate = false; - propertiesMap.forEach(function(propertiesObject) { - var properties = propertiesObject.properties; - var updateEntityIDs = propertiesObject.entityIDs; - if (properties.dynamic === false) { - // this object is leaving dynamic, so we zero its velocities - properties.localVelocity = Vec3.ZERO; - properties.localAngularVelocity = Vec3.ZERO; - } - if (properties.rotation !== undefined) { - properties.rotation = Quat.fromVec3Degrees(properties.rotation); - } - if (properties.localRotation !== undefined) { - properties.localRotation = Quat.fromVec3Degrees(properties.localRotation); - } - if (properties.emitOrientation !== undefined) { - properties.emitOrientation = Quat.fromVec3Degrees(properties.emitOrientation); - } - if (properties.keyLight !== undefined && properties.keyLight.direction !== undefined) { - var currentKeyLightDirection = Vec3.toPolar(Entities.getEntityProperties(selectionManager.selections[0], ['keyLight.direction']).keyLight.direction); - if (properties.keyLight.direction.x === undefined) { - properties.keyLight.direction.x = currentKeyLightDirection.x; - } - if (properties.keyLight.direction.y === undefined) { - properties.keyLight.direction.y = currentKeyLightDirection.y; - } - properties.keyLight.direction = Vec3.fromPolar(properties.keyLight.direction.x, properties.keyLight.direction.y); - } - - updateEntityIDs.forEach(function (entityID) { - Entities.editEntity(entityID, properties); - }); - - if (properties.name !== undefined || properties.modelURL !== undefined || properties.materialURL !== undefined || - properties.visible !== undefined || properties.locked !== undefined) { - - sendListUpdate = true; - } - - }); - if (sendListUpdate) { - entityListTool.sendUpdate(); - } - } - - - if (data.onlyUpdateEntities) { - blockPropertyUpdates = true; - } else { - pushCommandForSelections(); - SelectionManager.saveProperties(); - } - selectionManager._update(false, this); - blockPropertyUpdates = false; - } else if (data.type === 'saveUserData' || data.type === 'saveMaterialData') { - data.ids.forEach(function(entityID) { - Entities.editEntity(entityID, data.properties); - }); - } else if (data.type === "showMarketplace") { - showMarketplace(); - } else if (data.type === "action") { - if (data.action === "moveSelectionToGrid") { - if (selectionManager.hasSelection()) { - selectionManager.saveProperties(); - dY = grid.getOrigin().y - (selectionManager.worldPosition.y - selectionManager.worldDimensions.y / 2); - diff = { - x: 0, - y: dY, - z: 0 - }; - for (i = 0; i < selectionManager.selections.length; i++) { - properties = selectionManager.savedProperties[selectionManager.selections[i]]; - newPosition = Vec3.sum(properties.position, diff); - Entities.editEntity(selectionManager.selections[i], { - position: newPosition - }); - } - pushCommandForSelections(); - selectionManager._update(false, this); - } - } else if (data.action === "moveAllToGrid") { - if (selectionManager.hasSelection()) { - selectionManager.saveProperties(); - for (i = 0; i < selectionManager.selections.length; i++) { - properties = selectionManager.savedProperties[selectionManager.selections[i]]; - var bottomY = properties.boundingBox.center.y - properties.boundingBox.dimensions.y / 2; - dY = grid.getOrigin().y - bottomY; - diff = { - x: 0, - y: dY, - z: 0 - }; - newPosition = Vec3.sum(properties.position, diff); - Entities.editEntity(selectionManager.selections[i], { - position: newPosition - }); - } - pushCommandForSelections(); - selectionManager._update(false, this); - } - } else if (data.action === "resetToNaturalDimensions") { - if (selectionManager.hasSelection()) { - selectionManager.saveProperties(); - for (i = 0; i < selectionManager.selections.length; i++) { - properties = selectionManager.savedProperties[selectionManager.selections[i]]; - var naturalDimensions = properties.naturalDimensions; - - // If any of the natural dimensions are not 0, resize - if (properties.type === "Model" && naturalDimensions.x === 0 && naturalDimensions.y === 0 && - naturalDimensions.z === 0) { - Window.notifyEditError("Cannot reset entity to its natural dimensions: Model URL" + - " is invalid or the model has not yet been loaded."); - } else { - Entities.editEntity(selectionManager.selections[i], { - dimensions: properties.naturalDimensions - }); - } - } - pushCommandForSelections(); - selectionManager._update(false, this); - } - } else if (data.action === "previewCamera") { - if (selectionManager.hasSelection()) { - Camera.mode = "entity"; - Camera.cameraEntity = selectionManager.selections[0]; - } - } else if (data.action === "rescaleDimensions") { - var multiplier = data.percentage / 100.0; - if (selectionManager.hasSelection()) { - selectionManager.saveProperties(); - for (i = 0; i < selectionManager.selections.length; i++) { - properties = selectionManager.savedProperties[selectionManager.selections[i]]; - Entities.editEntity(selectionManager.selections[i], { - dimensions: Vec3.multiply(multiplier, properties.dimensions) - }); - } - pushCommandForSelections(); - selectionManager._update(false, this); - } - } else if (data.action === "reloadClientScripts") { - if (selectionManager.hasSelection()) { - var timestamp = Date.now(); - for (i = 0; i < selectionManager.selections.length; i++) { - Entities.editEntity(selectionManager.selections[i], { - scriptTimestamp: timestamp - }); - } - } - } else if (data.action === "reloadServerScripts") { - if (selectionManager.hasSelection()) { - for (i = 0; i < selectionManager.selections.length; i++) { - Entities.reloadServerScripts(selectionManager.selections[i]); - } - } - } - } else if (data.type === "propertiesPageReady") { - updateSelections(true); - } else if (data.type === "tooltipsRequest") { - emitScriptEvent({ - type: 'tooltipsReply', - tooltips: Script.require('./assets/data/createAppTooltips.json'), - hmdActive: HMD.active, - }); - } else if (data.type === "propertyRangeRequest") { - var propertyRanges = {}; - data.properties.forEach(function (property) { - propertyRanges[property] = Entities.getPropertyInfo(property); - }); - emitScriptEvent({ - type: 'propertyRangeReply', - propertyRanges: propertyRanges, - }); - } else if (data.type === "materialTargetRequest") { - var parentModelData; - var properties = Entities.getEntityProperties(data.entityID, ["type", "parentID"]); - if (properties.type === "Material" && properties.parentID !== Uuid.NULL) { - var parentType = Entities.getEntityProperties(properties.parentID, ["type"]).type; - if (parentType === "Model" || Entities.getNestableType(properties.parentID) === "avatar") { - parentModelData = Graphics.getModel(properties.parentID); - } else if (parentType === "Shape" || parentType === "Box" || parentType === "Sphere") { - parentModelData = {}; - parentModelData.numMeshes = 1; - parentModelData.materialNames = []; - } - } - emitScriptEvent({ - type: 'materialTargetReply', - entityID: data.entityID, - materialTargetData: parentModelData, - }); - } - }; - - HMD.displayModeChanged.connect(function() { - emitScriptEvent({ - type: 'hmdActiveChanged', - hmdActive: HMD.active, - }); - }); - - createToolsWindow.webEventReceived.addListener(this, onWebEventReceived); - - webView.webEventReceived.connect(this, onWebEventReceived); - - return that; -}; - - -var PopupMenu = function () { - var self = this; - - var MENU_ITEM_HEIGHT = 21; - var MENU_ITEM_SPACING = 1; - var TEXT_MARGIN = 7; - - var overlays = []; - var overlayInfo = {}; - - var visible = false; - - var upColor = { - red: 0, - green: 0, - blue: 0 - }; - var downColor = { - red: 192, - green: 192, - blue: 192 - }; - var overColor = { - red: 128, - green: 128, - blue: 128 - }; - - self.onSelectMenuItem = function () {}; - - self.addMenuItem = function (name) { - var id = Overlays.addOverlay("text", { - text: name, - backgroundAlpha: 1.0, - backgroundColor: upColor, - topMargin: TEXT_MARGIN, - leftMargin: TEXT_MARGIN, - width: 210, - height: MENU_ITEM_HEIGHT, - font: { - size: 12 - }, - visible: false - }); - overlays.push(id); - overlayInfo[id] = { - name: name - }; - return id; - }; - - self.updateMenuItemText = function (id, newText) { - Overlays.editOverlay(id, { - text: newText - }); - }; - - self.setPosition = function (x, y) { - for (var key in overlayInfo) { - Overlays.editOverlay(key, { - x: x, - y: y - }); - y += MENU_ITEM_HEIGHT + MENU_ITEM_SPACING; - } - }; - - self.onSelected = function () {}; - - var pressingOverlay = null; - var hoveringOverlay = null; - - self.mousePressEvent = function (event) { - if (event.isLeftButton) { - var overlay = Overlays.getOverlayAtPoint({ - x: event.x, - y: event.y - }); - if (overlay in overlayInfo) { - pressingOverlay = overlay; - Overlays.editOverlay(pressingOverlay, { - backgroundColor: downColor - }); - } else { - self.hide(); - } - return false; - } - }; - self.mouseMoveEvent = function (event) { - if (visible) { - var overlay = Overlays.getOverlayAtPoint({ - x: event.x, - y: event.y - }); - if (!pressingOverlay) { - if (hoveringOverlay !== null && overlay !== hoveringOverlay) { - Overlays.editOverlay(hoveringOverlay, { - backgroundColor: upColor - }); - hoveringOverlay = null; - } - if (overlay !== hoveringOverlay && overlay in overlayInfo) { - Overlays.editOverlay(overlay, { - backgroundColor: overColor - }); - hoveringOverlay = overlay; - } - } - } - return false; - }; - self.mouseReleaseEvent = function (event) { - var overlay = Overlays.getOverlayAtPoint({ - x: event.x, - y: event.y - }); - if (pressingOverlay !== null && pressingOverlay !== undefined) { - if (overlay === pressingOverlay) { - self.onSelectMenuItem(overlayInfo[overlay].name); - } - Overlays.editOverlay(pressingOverlay, { - backgroundColor: upColor - }); - pressingOverlay = null; - self.hide(); - } - }; - - self.setVisible = function (newVisible) { - if (newVisible !== visible) { - visible = newVisible; - for (var key in overlayInfo) { - Overlays.editOverlay(key, { - visible: newVisible - }); - } - } - }; - self.show = function () { - self.setVisible(true); - }; - self.hide = function () { - self.setVisible(false); - }; - - function cleanup() { - ContextOverlay.enabled = true; - for (var i = 0; i < overlays.length; i++) { - Overlays.deleteOverlay(overlays[i]); - } - Controller.mousePressEvent.disconnect(self.mousePressEvent); - Controller.mouseMoveEvent.disconnect(self.mouseMoveEvent); - Controller.mouseReleaseEvent.disconnect(self.mouseReleaseEvent); - - Entities.canRezChanged.disconnect(checkEditPermissionsAndUpdate); - Entities.canRezTmpChanged.disconnect(checkEditPermissionsAndUpdate); - Entities.canRezCertifiedChanged.disconnect(checkEditPermissionsAndUpdate); - Entities.canRezTmpCertifiedChanged.disconnect(checkEditPermissionsAndUpdate); - } - - Controller.mousePressEvent.connect(self.mousePressEvent); - Controller.mouseMoveEvent.connect(self.mouseMoveEvent); - Controller.mouseReleaseEvent.connect(self.mouseReleaseEvent); - Script.scriptEnding.connect(cleanup); - - return this; -}; - -function whenPressed(fn) { - return function(value) { - if (value > 0) { - fn(); - } - }; -} - -function whenReleased(fn) { - return function(value) { - if (value === 0) { - fn(); - } - }; -} - -var isOnMacPlatform = Controller.getValue(Controller.Hardware.Application.PlatformMac); - -var mapping = Controller.newMapping(CONTROLLER_MAPPING_NAME); -if (isOnMacPlatform) { - mapping.from([Controller.Hardware.Keyboard.Backspace]).to(deleteKey); -} else { - mapping.from([Controller.Hardware.Keyboard.Delete]).to(deleteKey); -} -mapping.from([Controller.Hardware.Keyboard.T]).to(toggleKey); -mapping.from([Controller.Hardware.Keyboard.F]).to(focusKey); -mapping.from([Controller.Hardware.Keyboard.G]).to(gridKey); -mapping.from([Controller.Hardware.Keyboard.X]) - .when([Controller.Hardware.Keyboard.Control]) - .to(whenReleased(function() { selectionManager.cutSelectedEntities() })); -mapping.from([Controller.Hardware.Keyboard.C]) - .when([Controller.Hardware.Keyboard.Control]) - .to(whenReleased(function() { selectionManager.copySelectedEntities() })); -mapping.from([Controller.Hardware.Keyboard.V]) - .when([Controller.Hardware.Keyboard.Control]) - .to(whenReleased(function() { selectionManager.pasteEntities() })); -mapping.from([Controller.Hardware.Keyboard.D]) - .when([Controller.Hardware.Keyboard.Control]) - .to(whenReleased(function() { selectionManager.duplicateSelection() })); - -// Bind undo to ctrl-shift-z to maintain backwards-compatibility -mapping.from([Controller.Hardware.Keyboard.Z]) - .when([Controller.Hardware.Keyboard.Control, Controller.Hardware.Keyboard.Shift]) - .to(whenPressed(function() { undoHistory.redo() })); - - -mapping.from([Controller.Hardware.Keyboard.P]) - .when([Controller.Hardware.Keyboard.Control, Controller.Hardware.Keyboard.Shift]) - .to(whenReleased(function() { unparentSelectedEntities(); })); - -mapping.from([Controller.Hardware.Keyboard.P]) - .when([Controller.Hardware.Keyboard.Control, !Controller.Hardware.Keyboard.Shift]) - .to(whenReleased(function() { parentSelectedEntities(); })); - -keyUpEventFromUIWindow = function(keyUpEvent) { - var WANT_DEBUG_MISSING_SHORTCUTS = false; - - var pressedValue = 0.0; - - if ((!isOnMacPlatform && keyUpEvent.keyCodeString === "Delete") - || (isOnMacPlatform && keyUpEvent.keyCodeString === "Backspace")) { - - deleteKey(pressedValue); - } else if (keyUpEvent.keyCodeString === "T") { - toggleKey(pressedValue); - } else if (keyUpEvent.keyCodeString === "F") { - focusKey(pressedValue); - } else if (keyUpEvent.keyCodeString === "G") { - gridKey(pressedValue); - } else if (keyUpEvent.controlKey && keyUpEvent.keyCodeString === "X") { - selectionManager.cutSelectedEntities(); - } else if (keyUpEvent.controlKey && keyUpEvent.keyCodeString === "C") { - selectionManager.copySelectedEntities(); - } else if (keyUpEvent.controlKey && keyUpEvent.keyCodeString === "V") { - selectionManager.pasteEntities(); - } else if (keyUpEvent.controlKey && keyUpEvent.keyCodeString === "D") { - selectionManager.duplicateSelection(); - } else if (!isOnMacPlatform && keyUpEvent.controlKey && !keyUpEvent.shiftKey && keyUpEvent.keyCodeString === "Z") { - undoHistory.undo(); // undo is only handled via handleMenuItem on Mac - } else if (keyUpEvent.controlKey && !keyUpEvent.shiftKey && keyUpEvent.keyCodeString === "P") { - parentSelectedEntities(); - } else if (keyUpEvent.controlKey && keyUpEvent.shiftKey && keyUpEvent.keyCodeString === "P") { - unparentSelectedEntities(); - } else if (!isOnMacPlatform && - ((keyUpEvent.controlKey && keyUpEvent.shiftKey && keyUpEvent.keyCodeString === "Z") || - (keyUpEvent.controlKey && keyUpEvent.keyCodeString === "Y"))) { - undoHistory.redo(); // redo is only handled via handleMenuItem on Mac - } else if (WANT_DEBUG_MISSING_SHORTCUTS) { - console.warn("unhandled key event: " + JSON.stringify(keyUpEvent)) - } -}; - -var propertyMenu = new PopupMenu(); - -propertyMenu.onSelectMenuItem = function (name) { - - if (propertyMenu.marketplaceID) { - showMarketplace(propertyMenu.marketplaceID); - } -}; - -var showMenuItem = propertyMenu.addMenuItem("Show in Marketplace"); - -var propertiesTool = new PropertiesTool(); - -selectionDisplay.onSpaceModeChange = function(spaceMode) { - entityListTool.setSpaceMode(spaceMode); - propertiesTool.setSpaceMode(spaceMode); -}; - -}()); // END LOCAL_SCOPE +// edit.js +// +// Created by Brad Hefta-Gaub on 10/2/14. +// Persist toolbar by HRS 6/11/15. +// Copyright 2014 High Fidelity, Inc. +// Copyright 2020 Vircadia contributors. +// +// This script allows you to edit entities with a new UI/UX for mouse and trackpad based editing +// +// 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, 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, OverlaySystemWindow, + keyUpEventFromUIWindow:true */ + +(function() { // BEGIN LOCAL_SCOPE + +"use strict"; + +var EDIT_TOGGLE_BUTTON = "com.highfidelity.interface.system.editButton"; + +var CONTROLLER_MAPPING_NAME = "com.highfidelity.editMode"; + +Script.include([ + "../libraries/stringHelpers.js", + "../libraries/dataViewHelpers.js", + "../libraries/progressDialog.js", + "../libraries/ToolTip.js", + "../libraries/entityCameraTool.js", + "../libraries/utils.js", + "../libraries/entityIconOverlayManager.js", + "../libraries/gridTool.js", + "entityList/entityList.js", + "entitySelectionTool/entitySelectionTool.js" +]); + +var CreateWindow = Script.require('./modules/createWindow.js'); + +var TITLE_OFFSET = 60; +var CREATE_TOOLS_WIDTH = 490; +var MAX_DEFAULT_ENTITY_LIST_HEIGHT = 942; + +var DEFAULT_IMAGE = "https://hifi-content.s3.amazonaws.com/DomainContent/production/no-image.jpg"; + +var createToolsWindow = new CreateWindow( + Script.resolvePath("qml/EditTools.qml"), + 'Create Tools', + 'com.highfidelity.create.createToolsWindow', + function () { + var windowHeight = Window.innerHeight - TITLE_OFFSET; + if (windowHeight > MAX_DEFAULT_ENTITY_LIST_HEIGHT) { + windowHeight = MAX_DEFAULT_ENTITY_LIST_HEIGHT; + } + return { + size: { + x: CREATE_TOOLS_WIDTH, + y: windowHeight + }, + position: { + x: Window.x + Window.innerWidth - CREATE_TOOLS_WIDTH, + y: Window.y + TITLE_OFFSET + } + } + }, + false +); + +/** + * @description Returns true in case we should use the tablet version of the CreateApp + * @returns boolean + */ +var shouldUseEditTabletApp = function() { + return HMD.active || (!HMD.active && !Settings.getValue("desktopTabletBecomesToolbar", true)); +}; + + +var selectionDisplay = SelectionDisplay; +var selectionManager = SelectionManager; + +var PARTICLE_SYSTEM_URL = Script.resolvePath("assets/images/icon-particles.svg"); +var POINT_LIGHT_URL = Script.resolvePath("assets/images/icon-point-light.svg"); +var SPOT_LIGHT_URL = Script.resolvePath("assets/images/icon-spot-light.svg"); +var ZONE_URL = Script.resolvePath("assets/images/icon-zone.svg"); + +var entityIconOverlayManager = new EntityIconOverlayManager(['Light', 'ParticleEffect', 'Zone'], function(entityID) { + var properties = Entities.getEntityProperties(entityID, ['type', 'isSpotlight']); + if (properties.type === 'Light') { + return { + url: properties.isSpotlight ? SPOT_LIGHT_URL : POINT_LIGHT_URL, + }; + } else if (properties.type === 'Zone') { + return { + url: ZONE_URL, + }; + } else { + return { + url: PARTICLE_SYSTEM_URL, + }; + } +}); + +var cameraManager = new CameraManager(); + +var grid = new Grid(); +var gridTool = new GridTool({ + horizontalGrid: grid, + createToolsWindow: createToolsWindow, + shouldUseEditTabletApp: shouldUseEditTabletApp +}); +gridTool.setVisible(false); + +var EntityShapeVisualizer = Script.require('./modules/entityShapeVisualizer.js'); +var entityShapeVisualizer = new EntityShapeVisualizer(["Zone"]); + +var entityListTool = new EntityListTool(shouldUseEditTabletApp); + +selectionManager.addEventListener(function () { + selectionDisplay.updateHandles(); + entityIconOverlayManager.updatePositions(); + entityShapeVisualizer.setEntities(selectionManager.selections); +}); + +var DEGREES_TO_RADIANS = Math.PI / 180.0; +var RADIANS_TO_DEGREES = 180.0 / Math.PI; + +var MIN_ANGULAR_SIZE = 2; +var MAX_ANGULAR_SIZE = 45; +var allowLargeModels = true; +var allowSmallModels = true; + +var DEFAULT_DIMENSION = 0.20; + +var DEFAULT_DIMENSIONS = { + x: DEFAULT_DIMENSION, + y: DEFAULT_DIMENSION, + z: DEFAULT_DIMENSION +}; + +var DEFAULT_LIGHT_DIMENSIONS = Vec3.multiply(20, DEFAULT_DIMENSIONS); + +var MENU_AUTO_FOCUS_ON_SELECT = "Auto Focus on Select"; +var MENU_EASE_ON_FOCUS = "Ease Orientation on Focus"; +var MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE = "Show Lights and Particle Systems in Create Mode"; +var MENU_SHOW_ZONES_IN_EDIT_MODE = "Show Zones in Create Mode"; + +var MENU_CREATE_ENTITIES_GRABBABLE = "Create Entities As Grabbable (except Zones, Particles, and Lights)"; +var MENU_ALLOW_SELECTION_LARGE = "Allow Selecting of Large Models"; +var MENU_ALLOW_SELECTION_SMALL = "Allow Selecting of Small Models"; +var MENU_ALLOW_SELECTION_LIGHTS = "Allow Selecting of Lights"; + +var SETTING_AUTO_FOCUS_ON_SELECT = "autoFocusOnSelect"; +var SETTING_EASE_ON_FOCUS = "cameraEaseOnFocus"; +var SETTING_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE = "showLightsAndParticlesInEditMode"; +var SETTING_SHOW_ZONES_IN_EDIT_MODE = "showZonesInEditMode"; + +var SETTING_EDIT_PREFIX = "Edit/"; + + +var CREATE_ENABLED_ICON = "icons/tablet-icons/edit-i.svg"; +var CREATE_DISABLED_ICON = "icons/tablet-icons/edit-disabled.svg"; + +// marketplace info, etc. not quite ready yet. +var SHOULD_SHOW_PROPERTY_MENU = false; +var INSUFFICIENT_PERMISSIONS_ERROR_MSG = "You do not have the necessary permissions to edit on this domain."; +var INSUFFICIENT_PERMISSIONS_IMPORT_ERROR_MSG = "You do not have the necessary permissions to place items on this domain."; + +var isActive = false; +var createButton = null; + +var IMPORTING_SVO_OVERLAY_WIDTH = 144; +var IMPORTING_SVO_OVERLAY_HEIGHT = 30; +var IMPORTING_SVO_OVERLAY_MARGIN = 5; +var IMPORTING_SVO_OVERLAY_LEFT_MARGIN = 34; +var importingSVOImageOverlay = Overlays.addOverlay("image", { + imageURL: Script.resolvePath("assets/images/hourglass.svg"), + width: 20, + height: 20, + alpha: 1.0, + x: Window.innerWidth - IMPORTING_SVO_OVERLAY_WIDTH, + y: Window.innerHeight - IMPORTING_SVO_OVERLAY_HEIGHT, + visible: false +}); +var importingSVOTextOverlay = Overlays.addOverlay("text", { + font: { + size: 14 + }, + text: "Importing SVO...", + leftMargin: IMPORTING_SVO_OVERLAY_LEFT_MARGIN, + x: Window.innerWidth - IMPORTING_SVO_OVERLAY_WIDTH - IMPORTING_SVO_OVERLAY_MARGIN, + y: Window.innerHeight - IMPORTING_SVO_OVERLAY_HEIGHT - IMPORTING_SVO_OVERLAY_MARGIN, + width: IMPORTING_SVO_OVERLAY_WIDTH, + height: IMPORTING_SVO_OVERLAY_HEIGHT, + backgroundColor: { + red: 80, + green: 80, + blue: 80 + }, + backgroundAlpha: 0.7, + visible: false +}); + +var MARKETPLACE_URL = Account.metaverseServerURL + "/marketplace"; +var marketplaceWindow = new OverlayWebWindow({ + title: 'Marketplace', + source: "about:blank", + width: 900, + height: 700, + visible: false +}); + +function showMarketplace(marketplaceID) { + var url = MARKETPLACE_URL; + if (marketplaceID) { + url = url + "/items/" + marketplaceID; + } + marketplaceWindow.setURL(url); + marketplaceWindow.setVisible(true); + marketplaceWindow.raise(); + + UserActivityLogger.logAction("opened_marketplace"); +} + +function hideMarketplace() { + marketplaceWindow.setVisible(false); + marketplaceWindow.setURL("about:blank"); +} + +// function toggleMarketplace() { +// if (marketplaceWindow.visible) { +// hideMarketplace(); +// } else { +// showMarketplace(); +// } +// } + +function adjustPositionPerBoundingBox(position, direction, registration, dimensions, orientation) { + // Adjust the position such that the bounding box (registration, dimensions 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 GRABBABLE_ENTITIES_MENU_CATEGORY = "Edit"; + +// Handles any edit mode updates required when domains have switched +function checkEditPermissionsAndUpdate() { + if ((createButton === null) || (createButton === undefined)) { + //--EARLY EXIT--( nothing to safely update ) + return; + } + + var hasRezPermissions = (Entities.canRez() || Entities.canRezTmp() || Entities.canRezCertified() || Entities.canRezTmpCertified()); + createButton.editProperties({ + icon: (hasRezPermissions ? CREATE_ENABLED_ICON : CREATE_DISABLED_ICON), + captionColor: (hasRezPermissions ? "#ffffff" : "#888888"), + }); + + if (!hasRezPermissions && isActive) { + that.setActive(false); + tablet.gotoHomeScreen(); + } +} + +// Copies the properties in `b` into `a`. `a` will be modified. +function copyProperties(a, b) { + for (var key in b) { + a[key] = b[key]; + } + return a; +} + +const DEFAULT_DYNAMIC_PROPERTIES = { + dynamic: true, + damping: 0.39347, + angularDamping: 0.39347, + gravity: { x: 0, y: -9.8, z: 0 }, +}; + +const DEFAULT_NON_DYNAMIC_PROPERTIES = { + dynamic: false, + damping: 0, + angularDamping: 0, + gravity: { x: 0, y: 0, z: 0 }, +}; + +const DEFAULT_ENTITY_PROPERTIES = { + All: { + description: "", + rotation: { x: 0, y: 0, z: 0, w: 1 }, + collidesWith: "static,dynamic,kinematic,otherAvatar,myAvatar", + collisionSoundURL: "", + cloneable: false, + ignoreIK: true, + canCastShadow: true, + href: "", + script: "", + serverScripts:"", + velocity: { + x: 0, + y: 0, + z: 0 + }, + angularVelocity: { + x: 0, + y: 0, + z: 0 + }, + restitution: 0.5, + friction: 0.5, + density: 1000, + dynamic: false, + }, + Shape: { + shape: "Box", + dimensions: { x: 0.2, y: 0.2, z: 0.2 }, + color: { red: 0, green: 180, blue: 239 }, + }, + Text: { + text: "Text", + dimensions: { + x: 0.65, + y: 0.3, + z: 0.01 + }, + textColor: { red: 255, green: 255, blue: 255 }, + backgroundColor: { red: 0, green: 0, blue: 0 }, + lineHeight: 0.06, + faceCamera: false, + }, + Zone: { + dimensions: { + x: 10, + y: 10, + z: 10 + }, + flyingAllowed: true, + ghostingAllowed: true, + filter: "", + keyLightMode: "inherit", + keyLightColor: { red: 255, green: 255, blue: 255 }, + keyLight: { + intensity: 1.0, + direction: { + x: 0.0, + y: -0.707106769084930, // 45 degrees + z: 0.7071067690849304 + }, + castShadows: true + }, + ambientLightMode: "inherit", + ambientLight: { + ambientIntensity: 0.5, + ambientURL: "" + }, + hazeMode: "inherit", + haze: { + hazeRange: 1000, + hazeAltitudeEffect: false, + hazeBaseRef: 0, + hazeColor: { + red: 128, + green: 154, + blue: 179 + }, + hazeBackgroundBlend: 0, + hazeEnableGlare: false, + hazeGlareColor: { + red: 255, + green: 229, + blue: 179 + }, + }, + shapeType: "box", + bloomMode: "inherit", + avatarPriority: "inherit" + }, + Model: { + collisionShape: "none", + compoundShapeURL: "", + animation: { + url: "", + running: false, + allowTranslation: false, + loop: true, + hold: false, + currentFrame: 0, + firstFrame: 0, + lastFrame: 100000, + fps: 30.0, + } + }, + Image: { + dimensions: { + x: 0.5385, + y: 0.2819, + z: 0.0092 + }, + shapeType: "box", + collisionless: true, + keepAspectRatio: false, + imageURL: DEFAULT_IMAGE + }, + Web: { + dimensions: { + x: 1.6, + y: 0.9, + z: 0.01 + }, + sourceUrl: "https://projectathena.io/", + dpi: 30, + }, + ParticleEffect: { + lifespan: 1.5, + maxParticles: 10, + textures: "https://content.highfidelity.com/DomainContent/production/Particles/wispy-smoke.png", + emitRate: 5.5, + emitSpeed: 0, + speedSpread: 0, + emitDimensions: { x: 0, y: 0, z: 0 }, + emitOrientation: { x: 0, y: 0, z: 0, w: 1 }, + emitterShouldTrail: true, + particleRadius: 0.25, + radiusStart: 0, + radiusSpread: 0, + particleColor: { + red: 255, + green: 255, + blue: 255 + }, + colorSpread: { + red: 0, + green: 0, + blue: 0 + }, + alpha: 0, + alphaStart: 1, + alphaSpread: 0, + emitAcceleration: { + x: 0, + y: 2.5, + z: 0 + }, + accelerationSpread: { + x: 0, + y: 0, + z: 0 + }, + particleSpin: 0, + spinSpread: 0, + rotateWithEntity: false, + polarStart: 0, + polarFinish: Math.PI, + azimuthStart: -Math.PI, + azimuthFinish: Math.PI + }, + Light: { + color: { red: 255, green: 255, blue: 255 }, + intensity: 5.0, + dimensions: DEFAULT_LIGHT_DIMENSIONS, + falloffRadius: 1.0, + isSpotlight: false, + exponent: 1.0, + cutoff: 75.0, + }, +}; + +var toolBar = (function () { + var EDIT_SETTING = "io.highfidelity.isEditing"; // for communication with other scripts + var that = {}, + toolBar, + activeButton = null, + systemToolbar = null, + dialogWindow = null, + tablet = null; + + function createNewEntity(requestedProperties) { + var dimensions = requestedProperties.dimensions ? requestedProperties.dimensions : DEFAULT_DIMENSIONS; + var position = getPositionToCreateEntity(); + var entityID = null; + + var properties = {}; + + copyProperties(properties, DEFAULT_ENTITY_PROPERTIES.All); + + var type = requestedProperties.type; + if (type === "Box" || type === "Sphere") { + copyProperties(properties, DEFAULT_ENTITY_PROPERTIES.Shape); + } else { + copyProperties(properties, DEFAULT_ENTITY_PROPERTIES[type]); + } + + // We apply the requested properties first so that they take priority over any default properties. + copyProperties(properties, requestedProperties); + + if (properties.dynamic) { + copyProperties(properties, DEFAULT_DYNAMIC_PROPERTIES); + } else { + copyProperties(properties, DEFAULT_NON_DYNAMIC_PROPERTIES); + } + + + if (position !== null && position !== undefined) { + 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", "Image", "Web", "Material"]; + 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 }; + registration = DEFAULT_REGISTRATION; + } + + var orientation = properties.orientation; + if (orientation === undefined) { + properties.orientation = MyAvatar.orientation; + var DEFAULT_ORIENTATION = properties.orientation; + orientation = DEFAULT_ORIENTATION; + } else { + // If the orientation is already defined, we perform the corresponding rotation assuming that + // our start referential is the avatar referential. + properties.orientation = Quat.multiply(MyAvatar.orientation, properties.orientation); + var DEFAULT_ORIENTATION = properties.orientation; + orientation = DEFAULT_ORIENTATION; + } + + position = adjustPositionPerBoundingBox(position, direction, registration, dimensions, orientation); + } + + position = grid.snapToSurface(grid.snapToGrid(position, false, dimensions), dimensions); + properties.position = position; + + if (!properties.grab) { + properties.grab = {}; + if (Menu.isOptionChecked(MENU_CREATE_ENTITIES_GRABBABLE) && + !(properties.type === "Zone" || properties.type === "Light" || properties.type === "ParticleEffect")) { + properties.grab.grabbable = true; + } else { + properties.grab.grabbable = false; + } + } + + entityID = Entities.addEntity(properties); + SelectionManager.addEntity(entityID, false, this); + SelectionManager.saveProperties(); + pushCommandForSelections([{ + entityID: entityID, + properties: properties + }], [], true); + + 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", "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(false, this); + } 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."); + } + + selectionManager.clearSelections(this); + entityListTool.sendUpdate(); + selectionManager.setSelections([entityID], this); + + Window.setFocus(); + + return entityID; + } + + function closeExistingDialogWindow() { + if (dialogWindow) { + dialogWindow.close(); + dialogWindow = null; + } + } + + function cleanup() { + that.setActive(false); + if (tablet) { + tablet.removeButton(activeButton); + } + if (systemToolbar) { + systemToolbar.removeButton(EDIT_TOGGLE_BUTTON); + } + } + + var buttonHandlers = {}; // only used to tablet mode + + function addButton(name, handler) { + buttonHandlers[name] = handler; + } + + var SHAPE_TYPE_NONE = 0; + var SHAPE_TYPE_SIMPLE_HULL = 1; + var SHAPE_TYPE_SIMPLE_COMPOUND = 2; + var SHAPE_TYPE_STATIC_MESH = 3; + var SHAPE_TYPE_BOX = 4; + var SHAPE_TYPE_SPHERE = 5; + var DYNAMIC_DEFAULT = false; + + var MATERIAL_MODE_UV = 0; + var MATERIAL_MODE_PROJECTED = 1; + + function handleNewModelDialogResult(result) { + if (result) { + var url = result.url; + var shapeType; + switch (result.collisionShapeIndex) { + case SHAPE_TYPE_SIMPLE_HULL: + shapeType = "simple-hull"; + break; + case SHAPE_TYPE_SIMPLE_COMPOUND: + shapeType = "simple-compound"; + break; + case SHAPE_TYPE_STATIC_MESH: + shapeType = "static-mesh"; + break; + case SHAPE_TYPE_BOX: + shapeType = "box"; + break; + case SHAPE_TYPE_SPHERE: + shapeType = "sphere"; + break; + default: + shapeType = "none"; + } + + var dynamic = result.dynamic !== null ? result.dynamic : DYNAMIC_DEFAULT; + if (shapeType === "static-mesh" && dynamic) { + // The prompt should prevent this case + print("Error: model cannot be both static mesh and dynamic. This should never happen."); + } else if (url) { + createNewEntity({ + type: "Model", + modelURL: url, + shapeType: shapeType, + grab: { + grabbable: result.grabbable + }, + dynamic: dynamic, + }); + } + } + } + + function handleNewMaterialDialogResult(result) { + if (result) { + var materialURL = result.textInput; + //var materialMappingMode; + //switch (result.comboBox) { + // case MATERIAL_MODE_PROJECTED: + // materialMappingMode = "projected"; + // break; + // default: + // shapeType = "uv"; + //} + var materialData = ""; + if (materialURL.startsWith("materialData")) { + materialData = JSON.stringify({ + "materials": {} + }); + } + + var DEFAULT_LAYERED_MATERIAL_PRIORITY = 1; + if (materialURL) { + createNewEntity({ + type: "Material", + materialURL: materialURL, + //materialMappingMode: materialMappingMode, + priority: DEFAULT_LAYERED_MATERIAL_PRIORITY, + materialData: materialData + }); + } + } + } + + function fromQml(message) { // messages are {method, params}, like json-rpc. See also sendToQml. + var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); + tablet.popFromStack(); + switch (message.method) { + case "newModelDialogAdd": + handleNewModelDialogResult(message.params); + closeExistingDialogWindow(); + break; + case "newModelDialogCancel": + closeExistingDialogWindow(); + break; + case "newEntityButtonClicked": + buttonHandlers[message.params.buttonName](); + break; + case "newMaterialDialogAdd": + handleNewMaterialDialogResult(message.params); + closeExistingDialogWindow(); + break; + case "newMaterialDialogCancel": + closeExistingDialogWindow(); + break; + } + } + + var entitiesToDelete = []; + var deletedEntityTimer = null; + var DELETE_ENTITY_TIMER_TIMEOUT = 100; + + function checkDeletedEntityAndUpdate(entityID) { + // Allow for multiple entity deletes before updating the entities selected. + entitiesToDelete.push(entityID); + if (deletedEntityTimer !== null) { + Script.clearTimeout(deletedEntityTimer); + } + deletedEntityTimer = Script.setTimeout(function () { + if (entitiesToDelete.length > 0) { + selectionManager.removeEntities(entitiesToDelete, this); + } + entityListTool.removeEntities(entitiesToDelete, selectionManager.selections); + entitiesToDelete = []; + deletedEntityTimer = null; + }, DELETE_ENTITY_TIMER_TIMEOUT); + } + + function initialize() { + Script.scriptEnding.connect(cleanup); + Window.domainChanged.connect(function () { + if (isActive) { + tablet.gotoHomeScreen(); + } + that.setActive(false); + that.clearEntityList(); + checkEditPermissionsAndUpdate(); + }); + + HMD.displayModeChanged.connect(function() { + if (isActive) { + tablet.gotoHomeScreen(); + } + that.setActive(false); + }); + + Entities.canAdjustLocksChanged.connect(function (canAdjustLocks) { + if (isActive && !canAdjustLocks) { + that.setActive(false); + } + checkEditPermissionsAndUpdate(); + }); + + Entities.canRezChanged.connect(checkEditPermissionsAndUpdate); + Entities.canRezTmpChanged.connect(checkEditPermissionsAndUpdate); + Entities.canRezCertifiedChanged.connect(checkEditPermissionsAndUpdate); + Entities.canRezTmpCertifiedChanged.connect(checkEditPermissionsAndUpdate); + var hasRezPermissions = (Entities.canRez() || Entities.canRezTmp() || Entities.canRezCertified() || Entities.canRezTmpCertified()); + + Entities.deletingEntity.connect(checkDeletedEntityAndUpdate); + + var createButtonIconRsrc = (hasRezPermissions ? CREATE_ENABLED_ICON : CREATE_DISABLED_ICON); + tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); + activeButton = tablet.addButton({ + captionColor: hasRezPermissions ? "#ffffff" : "#888888", + icon: createButtonIconRsrc, + activeIcon: "icons/tablet-icons/edit-a.svg", + text: "CREATE", + sortOrder: 10 + }); + createButton = activeButton; + tablet.screenChanged.connect(function (type, url) { + var isGoingToHomescreenOnDesktop = (!shouldUseEditTabletApp() && + (url === 'hifi/tablet/TabletHome.qml' || url === '')); + if (isActive && (type !== "QML" || url !== Script.resolvePath("qml/Edit.qml")) && !isGoingToHomescreenOnDesktop) { + that.setActive(false); + } + }); + tablet.fromQml.connect(fromQml); + createToolsWindow.fromQml.addListener(fromQml); + + createButton.clicked.connect(function() { + if ( ! (Entities.canRez() || Entities.canRezTmp() || Entities.canRezCertified() || Entities.canRezTmpCertified()) ) { + Window.notifyEditError(INSUFFICIENT_PERMISSIONS_ERROR_MSG); + return; + } + + that.toggle(); + }); + + addButton("importEntitiesButton", function() { + Window.browseChanged.connect(onFileOpenChanged); + Window.browseAsync("Select Model to Import", "", "*.json"); + }); + + addButton("openAssetBrowserButton", function() { + Window.showAssetServer(); + }); + function createNewEntityDialogButtonCallback(entityType) { + return function() { + if (shouldUseEditTabletApp()) { + // tablet version of new-model dialog + var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); + tablet.pushOntoStack(Script.resolvePath("qml/New" + entityType + "Dialog.qml")); + } else { + closeExistingDialogWindow(); + var qmlPath = Script.resolvePath("qml/New" + entityType + "Window.qml"); + var DIALOG_WINDOW_SIZE = { x: 500, y: 300 }; + dialogWindow = Desktop.createWindow(qmlPath, { + title: "New " + entityType + " Entity", + additionalFlags: Desktop.ALWAYS_ON_TOP | Desktop.CLOSE_BUTTON_HIDES, + presentationMode: Desktop.PresentationMode.NATIVE, + size: DIALOG_WINDOW_SIZE, + visible: true + }); + dialogWindow.fromQml.connect(fromQml); + } + }; + } + + addButton("newModelButton", createNewEntityDialogButtonCallback("Model")); + + addButton("newShapeButton", function () { + createNewEntity({ + type: "Shape", + shape: "Cube", + }); + }); + + addButton("newLightButton", function () { + createNewEntity({ + type: "Light", + }); + }); + + addButton("newTextButton", function () { + createNewEntity({ + type: "Text", + }); + }); + + addButton("newImageButton", function () { + createNewEntity({ + type: "Image", + }); + }); + + addButton("newWebButton", function () { + createNewEntity({ + type: "Web", + }); + }); + + addButton("newZoneButton", function () { + createNewEntity({ + type: "Zone", + }); + }); + + addButton("newParticleButton", function () { + createNewEntity({ + type: "ParticleEffect", + }); + }); + + addButton("newMaterialButton", createNewEntityDialogButtonCallback("Material")); + + var deactivateCreateIfDesktopWindowsHidden = function() { + if (!shouldUseEditTabletApp() && !entityListTool.isVisible() && !createToolsWindow.isVisible()) { + that.setActive(false); + } + }; + entityListTool.interactiveWindowHidden.addListener(this, deactivateCreateIfDesktopWindowsHidden); + createToolsWindow.interactiveWindowHidden.addListener(this, deactivateCreateIfDesktopWindowsHidden); + + that.setActive(false); + } + + that.clearEntityList = function () { + entityListTool.clearEntityList(); + }; + + that.toggle = function () { + that.setActive(!isActive); + if (!isActive) { + tablet.gotoHomeScreen(); + } + }; + + that.setActive = function (active) { + ContextOverlay.enabled = !active; + Settings.setValue(EDIT_SETTING, active); + if (active) { + Controller.captureEntityClickEvents(); + } else { + Controller.releaseEntityClickEvents(); + + closeExistingDialogWindow(); + } + if (active === isActive) { + return; + } + if (active && !Entities.canRez() && !Entities.canRezTmp() && !Entities.canRezCertified() && !Entities.canRezTmpCertified()) { + Window.notifyEditError(INSUFFICIENT_PERMISSIONS_ERROR_MSG); + return; + } + Messages.sendLocalMessage("edit-events", JSON.stringify({ + enabled: active + })); + isActive = active; + activeButton.editProperties({isActive: isActive}); + undoHistory.setEnabled(isActive); + + var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); + + if (!isActive) { + entityListTool.setVisible(false); + gridTool.setVisible(false); + grid.setEnabled(false); + propertiesTool.setVisible(false); + selectionManager.clearSelections(this); + cameraManager.disable(); + selectionDisplay.disableTriggerMapping(); + tablet.landscape = false; + Controller.disableMapping(CONTROLLER_MAPPING_NAME); + } else { + if (shouldUseEditTabletApp()) { + tablet.loadQMLSource(Script.resolvePath("qml/Edit.qml"), true); + } else { + // make other apps inactive while in desktop mode + tablet.gotoHomeScreen(); + } + UserActivityLogger.enabledEdit(); + entityListTool.setVisible(true); + entityListTool.sendUpdate(); + gridTool.setVisible(true); + grid.setEnabled(true); + propertiesTool.setVisible(true); + selectionDisplay.enableTriggerMapping(); + print("starting tablet in landscape mode"); + tablet.landscape = true; + Controller.enableMapping(CONTROLLER_MAPPING_NAME); + // 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(); + } + entityIconOverlayManager.setVisible(isActive && Menu.isOptionChecked(MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE)); + Entities.setDrawZoneBoundaries(isActive && Menu.isOptionChecked(MENU_SHOW_ZONES_IN_EDIT_MODE)); + }; + + initialize(); + return that; +})(); + +var selectedEntityID; +var orientation; +var intersection; + + +function rayPlaneIntersection(pickRay, point, normal) { // + // + // This version of the test returns the intersection of a line with a plane + // + var collides = Vec3.dot(pickRay.direction, normal); + + var d = -Vec3.dot(point, normal); + var t = -(Vec3.dot(pickRay.origin, normal) + d) / collides; + + return Vec3.sum(pickRay.origin, Vec3.multiply(pickRay.direction, t)); +} + +function rayPlaneIntersection2(pickRay, point, normal) { + // + // This version of the test returns false if the ray is directed away from the plane + // + var collides = Vec3.dot(pickRay.direction, normal); + var d = -Vec3.dot(point, normal); + var t = -(Vec3.dot(pickRay.origin, normal) + d) / collides; + if (t < 0.0) { + return false; + } else { + return Vec3.sum(pickRay.origin, Vec3.multiply(pickRay.direction, t)); + } +} + +function findClickedEntity(event) { + var pickZones = event.isControl; + + if (pickZones) { + Entities.setZonesArePickable(true); + } + + var pickRay = Camera.computePickRay(event.x, event.y); + var tabletIDs = getMainTabletIDs(); + if (tabletIDs.length > 0) { + var overlayResult = Overlays.findRayIntersection(pickRay, true, tabletIDs); + if (overlayResult.intersects) { + return null; + } + } + + var entityResult = Entities.findRayIntersection(pickRay, true); // want precision picking + var iconResult = entityIconOverlayManager.findRayIntersection(pickRay); + iconResult.accurate = true; + + if (pickZones) { + Entities.setZonesArePickable(false); + } + + var result; + + if (iconResult.intersects) { + result = iconResult; + } else if (entityResult.intersects) { + result = entityResult; + } else { + return null; + } + + if (!result.accurate) { + return null; + } + + var foundEntity = result.entityID; + return { + pickRay: pickRay, + entityID: foundEntity, + intersection: result.intersection + }; +} + +// Handles selections on overlays while in edit mode by querying entities from +// entityIconOverlayManager. +function handleOverlaySelectionToolUpdates(channel, message, sender) { + var wantDebug = false; + if (sender !== MyAvatar.sessionUUID || channel !== 'entityToolUpdates') + return; + + var data = JSON.parse(message); + + if (data.method === "selectOverlay") { + if (!selectionDisplay.triggered() || selectionDisplay.triggeredHand === data.hand) { + if (wantDebug) { + print("setting selection to overlay " + data.overlayID); + } + var entity = entityIconOverlayManager.findEntity(data.overlayID); + + if (entity !== null) { + selectionManager.setSelections([entity], this); + } + } + } +} + +function handleMessagesReceived(channel, message, sender) { + switch( channel ){ + case 'entityToolUpdates': { + handleOverlaySelectionToolUpdates( channel, message, sender ); + break; + } + default: { + return; + } + } +} + +Messages.subscribe("entityToolUpdates"); +Messages.messageReceived.connect(handleMessagesReceived); + +var mouseHasMovedSincePress = false; +var mousePressStartTime = 0; +var mousePressStartPosition = { + x: 0, + y: 0 +}; +var mouseDown = false; + +function mousePressEvent(event) { + mouseDown = true; + mousePressStartPosition = { + x: event.x, + y: event.y + }; + mousePressStartTime = Date.now(); + mouseHasMovedSincePress = false; + mouseCapturedByTool = false; + + if (propertyMenu.mousePressEvent(event) || progressDialog.mousePressEvent(event)) { + mouseCapturedByTool = true; + return; + } + if (isActive) { + if (cameraManager.mousePressEvent(event) || selectionDisplay.mousePressEvent(event)) { + // Event handled; do nothing. + return; + } + } +} + +var mouseCapturedByTool = false; +var lastMousePosition = null; +var CLICK_TIME_THRESHOLD = 500 * 1000; // 500 ms +var CLICK_MOVE_DISTANCE_THRESHOLD = 20; +var IDLE_MOUSE_TIMEOUT = 200; + +var lastMouseMoveEvent = null; + +function mouseMoveEventBuffered(event) { + lastMouseMoveEvent = event; +} + +function mouseMove(event) { + if (mouseDown && !mouseHasMovedSincePress) { + var timeSincePressMicro = Date.now() - mousePressStartTime; + + var dX = mousePressStartPosition.x - event.x; + var dY = mousePressStartPosition.y - event.y; + var sqDist = (dX * dX) + (dY * dY); + + // If less than CLICK_TIME_THRESHOLD has passed since the mouse click AND the mouse has moved + // less than CLICK_MOVE_DISTANCE_THRESHOLD distance, then don't register this as a mouse move + // yet. The goal is to provide mouse clicks that are more lenient to small movements. + if (timeSincePressMicro < CLICK_TIME_THRESHOLD && sqDist < CLICK_MOVE_DISTANCE_THRESHOLD) { + return; + } + mouseHasMovedSincePress = true; + } + + if (!isActive) { + return; + } + + // allow the selectionDisplay and cameraManager to handle the event first, if it doesn't handle it, then do our own thing + if (selectionDisplay.mouseMoveEvent(event) || propertyMenu.mouseMoveEvent(event) || cameraManager.mouseMoveEvent(event)) { + return; + } + + lastMousePosition = { + x: event.x, + y: event.y + }; +} + +function mouseReleaseEvent(event) { + mouseDown = false; + + if (lastMouseMoveEvent) { + mouseMove(lastMouseMoveEvent); + lastMouseMoveEvent = null; + } + if (propertyMenu.mouseReleaseEvent(event)) { + return true; + } + if (isActive && selectionManager.hasSelection()) { + tooltip.show(false); + } + if (mouseCapturedByTool) { + + return; + } + + cameraManager.mouseReleaseEvent(event); + + if (!mouseHasMovedSincePress) { + mouseClickEvent(event); + } +} + +function wasTabletOrEditHandleClicked(event) { + var rayPick = Camera.computePickRay(event.x, event.y); + var result = Overlays.findRayIntersection(rayPick, true); + if (result.intersects) { + var overlayID = result.overlayID; + var tabletIDs = getMainTabletIDs(); + if (tabletIDs.indexOf(overlayID) >= 0) { + return true; + } else if (selectionDisplay.isEditHandle(overlayID)) { + return true; + } + } + return false; +} + +function mouseClickEvent(event) { + var wantDebug = false; + var result, properties, tabletClicked; + if (isActive && event.isLeftButton) { + result = findClickedEntity(event); + var tabletOrEditHandleClicked = wasTabletOrEditHandleClicked(event); + if (tabletOrEditHandleClicked) { + return; + } + + if (result === null || result === undefined) { + if (!event.isShifted) { + selectionManager.clearSelections(this); + } + return; + } + toolBar.setActive(true); + var pickRay = result.pickRay; + var foundEntity = result.entityID; + if (HMD.tabletID && foundEntity === HMD.tabletID) { + return; + } + properties = Entities.getEntityProperties(foundEntity); + var halfDiagonal = Vec3.length(properties.dimensions) / 2.0; + + if (wantDebug) { + print("Checking properties: " + properties.id + " " + " - Half Diagonal:" + halfDiagonal); + } + // P P - Model + // /| A - Palm + // / | d B - unit vector toward tip + // / | X - base of the perpendicular line + // A---X----->B d - distance fom axis + // x x - distance from A + // + // |X-A| = (P-A).B + // X === A + ((P-A).B)B + // d = |P-X| + + var A = pickRay.origin; + var B = Vec3.normalize(pickRay.direction); + var P = properties.position; + + var x = Vec3.dot(Vec3.subtract(P, A), B); + + var angularSize = 2 * Math.atan(halfDiagonal / Vec3.distance(Camera.getPosition(), properties.position)) * + 180 / Math.PI; + + var sizeOK = (allowLargeModels || angularSize < MAX_ANGULAR_SIZE) && + (allowSmallModels || angularSize > MIN_ANGULAR_SIZE); + + if (0 < x && sizeOK) { + selectedEntityID = foundEntity; + orientation = MyAvatar.orientation; + intersection = rayPlaneIntersection(pickRay, P, Quat.getForward(orientation)); + + if (!event.isShifted) { + selectionManager.setSelections([foundEntity], this); + } else { + selectionManager.addEntity(foundEntity, true, this); + } + selectionManager.saveProperties(); + + if (wantDebug) { + print("Model selected: " + foundEntity); + } + selectionDisplay.select(selectedEntityID, event); + + if (Menu.isOptionChecked(MENU_AUTO_FOCUS_ON_SELECT)) { + cameraManager.enable(); + cameraManager.focus(selectionManager.worldPosition, + selectionManager.worldDimensions, + Menu.isOptionChecked(MENU_EASE_ON_FOCUS)); + } + } + } else if (event.isRightButton) { + result = findClickedEntity(event); + if (result) { + if (SHOULD_SHOW_PROPERTY_MENU !== true) { + return; + } + properties = Entities.getEntityProperties(result.entityID); + if (properties.marketplaceID) { + propertyMenu.marketplaceID = properties.marketplaceID; + propertyMenu.updateMenuItemText(showMenuItem, "Show in Marketplace"); + } else { + propertyMenu.marketplaceID = null; + propertyMenu.updateMenuItemText(showMenuItem, "No marketplace info"); + } + propertyMenu.setPosition(event.x, event.y); + propertyMenu.show(); + } else { + propertyMenu.hide(); + } + } +} + +Controller.mousePressEvent.connect(mousePressEvent); +Controller.mouseMoveEvent.connect(mouseMoveEventBuffered); +Controller.mouseReleaseEvent.connect(mouseReleaseEvent); + + +// In order for editVoxels and editModels to play nice together, they each check to see if a "delete" menu item already +// exists. If it doesn't they add it. If it does they don't. They also only delete the menu item if they were the one that +// added it. +var modelMenuAddedDelete = false; +var originalLightsArePickable = Entities.getLightsArePickable(); + +function setupModelMenus() { + // adj our menuitems + Menu.addMenuItem({ + menuName: "Edit", + menuItemName: "Undo", + shortcutKey: 'Ctrl+Z', + position: 0, + }); + Menu.addMenuItem({ + menuName: "Edit", + menuItemName: "Redo", + shortcutKey: 'Ctrl+Y', + position: 1, + }); + + Menu.addMenuItem({ + menuName: "Edit", + menuItemName: "Entities", + isSeparator: true + }); + if (!Menu.menuItemExists("Edit", "Delete")) { + Menu.addMenuItem({ + menuName: "Edit", + menuItemName: "Delete", + shortcutKeyEvent: { + text: "delete" + }, + afterItem: "Entities", + }); + modelMenuAddedDelete = true; + } + + Menu.addMenuItem({ + menuName: "Edit", + menuItemName: "Parent Entity to Last", + afterItem: "Entities" + }); + + Menu.addMenuItem({ + menuName: "Edit", + menuItemName: "Unparent Entity", + afterItem: "Parent Entity to Last" + }); + + Menu.addMenuItem({ + menuName: GRABBABLE_ENTITIES_MENU_CATEGORY, + menuItemName: MENU_CREATE_ENTITIES_GRABBABLE, + afterItem: "Unparent Entity", + isCheckable: true, + isChecked: Settings.getValue(SETTING_EDIT_PREFIX + MENU_CREATE_ENTITIES_GRABBABLE, true) + }); + + Menu.addMenuItem({ + menuName: "Edit", + menuItemName: MENU_ALLOW_SELECTION_LARGE, + afterItem: MENU_CREATE_ENTITIES_GRABBABLE, + isCheckable: true, + isChecked: Settings.getValue(SETTING_EDIT_PREFIX + MENU_ALLOW_SELECTION_LARGE, true) + }); + Menu.addMenuItem({ + menuName: "Edit", + menuItemName: MENU_ALLOW_SELECTION_SMALL, + afterItem: MENU_ALLOW_SELECTION_LARGE, + isCheckable: true, + isChecked: Settings.getValue(SETTING_EDIT_PREFIX + MENU_ALLOW_SELECTION_SMALL, true) + }); + Menu.addMenuItem({ + menuName: "Edit", + menuItemName: MENU_ALLOW_SELECTION_LIGHTS, + afterItem: MENU_ALLOW_SELECTION_SMALL, + isCheckable: true, + isChecked: Settings.getValue(SETTING_EDIT_PREFIX + MENU_ALLOW_SELECTION_LIGHTS, false) + }); + Menu.addMenuItem({ + menuName: "Edit", + menuItemName: "Select All Entities In Box", + afterItem: "Allow Selecting of Lights" + }); + Menu.addMenuItem({ + menuName: "Edit", + menuItemName: "Select All Entities Touching Box", + afterItem: "Select All Entities In Box" + }); + + Menu.addMenuItem({ + menuName: "Edit", + menuItemName: "Export Entities", + afterItem: "Entities" + }); + Menu.addMenuItem({ + menuName: "Edit", + menuItemName: "Import Entities", + afterItem: "Export Entities" + }); + Menu.addMenuItem({ + menuName: "Edit", + menuItemName: "Import Entities from URL", + afterItem: "Import Entities" + }); + + Menu.addMenuItem({ + menuName: "Edit", + menuItemName: MENU_AUTO_FOCUS_ON_SELECT, + isCheckable: true, + isChecked: Settings.getValue(SETTING_AUTO_FOCUS_ON_SELECT) === "true" + }); + Menu.addMenuItem({ + menuName: "Edit", + menuItemName: MENU_EASE_ON_FOCUS, + afterItem: MENU_AUTO_FOCUS_ON_SELECT, + isCheckable: true, + isChecked: Settings.getValue(SETTING_EASE_ON_FOCUS) === "true" + }); + Menu.addMenuItem({ + menuName: "Edit", + menuItemName: MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE, + afterItem: MENU_EASE_ON_FOCUS, + isCheckable: true, + isChecked: Settings.getValue(SETTING_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE) !== "false" + }); + Menu.addMenuItem({ + menuName: "Edit", + menuItemName: MENU_SHOW_ZONES_IN_EDIT_MODE, + afterItem: MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE, + isCheckable: true, + isChecked: Settings.getValue(SETTING_SHOW_ZONES_IN_EDIT_MODE) !== "false" + }); + + Entities.setLightsArePickable(false); +} + +setupModelMenus(); // do this when first running our script. + +function cleanupModelMenus() { + Menu.removeMenuItem("Edit", "Undo"); + Menu.removeMenuItem("Edit", "Redo"); + + Menu.removeSeparator("Edit", "Entities"); + if (modelMenuAddedDelete) { + // delete our menuitems + Menu.removeMenuItem("Edit", "Delete"); + } + + Menu.removeMenuItem("Edit", "Parent Entity to Last"); + Menu.removeMenuItem("Edit", "Unparent Entity"); + Menu.removeMenuItem("Edit", "Allow Selecting of Large Models"); + Menu.removeMenuItem("Edit", "Allow Selecting of Small Models"); + Menu.removeMenuItem("Edit", "Allow Selecting of Lights"); + Menu.removeMenuItem("Edit", "Select All Entities In Box"); + Menu.removeMenuItem("Edit", "Select All Entities Touching Box"); + + Menu.removeMenuItem("Edit", "Export Entities"); + Menu.removeMenuItem("Edit", "Import Entities"); + Menu.removeMenuItem("Edit", "Import Entities from URL"); + + Menu.removeMenuItem("Edit", MENU_AUTO_FOCUS_ON_SELECT); + Menu.removeMenuItem("Edit", MENU_EASE_ON_FOCUS); + Menu.removeMenuItem("Edit", MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE); + Menu.removeMenuItem("Edit", MENU_SHOW_ZONES_IN_EDIT_MODE); + Menu.removeMenuItem("Edit", MENU_CREATE_ENTITIES_GRABBABLE); +} + +Script.scriptEnding.connect(function () { + toolBar.setActive(false); + Settings.setValue(SETTING_AUTO_FOCUS_ON_SELECT, Menu.isOptionChecked(MENU_AUTO_FOCUS_ON_SELECT)); + Settings.setValue(SETTING_EASE_ON_FOCUS, Menu.isOptionChecked(MENU_EASE_ON_FOCUS)); + Settings.setValue(SETTING_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE, Menu.isOptionChecked(MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE)); + Settings.setValue(SETTING_SHOW_ZONES_IN_EDIT_MODE, Menu.isOptionChecked(MENU_SHOW_ZONES_IN_EDIT_MODE)); + + Settings.setValue(SETTING_EDIT_PREFIX + MENU_ALLOW_SELECTION_LARGE, Menu.isOptionChecked(MENU_ALLOW_SELECTION_LARGE)); + Settings.setValue(SETTING_EDIT_PREFIX + MENU_ALLOW_SELECTION_SMALL, Menu.isOptionChecked(MENU_ALLOW_SELECTION_SMALL)); + Settings.setValue(SETTING_EDIT_PREFIX + MENU_ALLOW_SELECTION_LIGHTS, Menu.isOptionChecked(MENU_ALLOW_SELECTION_LIGHTS)); + + + progressDialog.cleanup(); + cleanupModelMenus(); + tooltip.cleanup(); + selectionDisplay.cleanup(); + entityShapeVisualizer.cleanup(); + Entities.setLightsArePickable(originalLightsArePickable); + + Overlays.deleteOverlay(importingSVOImageOverlay); + Overlays.deleteOverlay(importingSVOTextOverlay); + + Controller.keyReleaseEvent.disconnect(keyReleaseEvent); + Controller.keyPressEvent.disconnect(keyPressEvent); + + Controller.mousePressEvent.disconnect(mousePressEvent); + Controller.mouseMoveEvent.disconnect(mouseMoveEventBuffered); + Controller.mouseReleaseEvent.disconnect(mouseReleaseEvent); + + Messages.messageReceived.disconnect(handleMessagesReceived); + Messages.unsubscribe("entityToolUpdates"); + createButton = null; +}); + +var lastOrientation = null; +var lastPosition = null; + +// Do some stuff regularly, like check for placement of various overlays +Script.update.connect(function (deltaTime) { + progressDialog.move(); + selectionDisplay.checkControllerMove(); + var dOrientation = Math.abs(Quat.dot(Camera.orientation, lastOrientation) - 1); + var dPosition = Vec3.distance(Camera.position, lastPosition); + if (dOrientation > 0.001 || dPosition > 0.001) { + propertyMenu.hide(); + lastOrientation = Camera.orientation; + lastPosition = Camera.position; + } + if (lastMouseMoveEvent) { + mouseMove(lastMouseMoveEvent); + lastMouseMoveEvent = null; + } +}); + +function insideBox(center, dimensions, point) { + return (Math.abs(point.x - center.x) <= (dimensions.x / 2.0)) && + (Math.abs(point.y - center.y) <= (dimensions.y / 2.0)) && + (Math.abs(point.z - center.z) <= (dimensions.z / 2.0)); +} + +function selectAllEntitiesInCurrentSelectionBox(keepIfTouching) { + if (selectionManager.hasSelection()) { + // Get all entities touching the bounding box of the current selection + var boundingBoxCorner = Vec3.subtract(selectionManager.worldPosition, + Vec3.multiply(selectionManager.worldDimensions, 0.5)); + var entities = Entities.findEntitiesInBox(boundingBoxCorner, selectionManager.worldDimensions); + + if (!keepIfTouching) { + var isValid; + if (selectionManager.localPosition === null || selectionManager.localPosition === undefined) { + isValid = function (position) { + return insideBox(selectionManager.worldPosition, selectionManager.worldDimensions, position); + }; + } else { + isValid = function (position) { + var localPosition = Vec3.multiplyQbyV(Quat.inverse(selectionManager.localRotation), + Vec3.subtract(position, + selectionManager.localPosition)); + return insideBox(Vec3.ZERO, selectionManager.localDimensions, localPosition); + }; + } + for (var i = 0; i < entities.length; ++i) { + var properties = Entities.getEntityProperties(entities[i]); + if (!isValid(properties.position)) { + entities.splice(i, 1); + --i; + } + } + } + selectionManager.setSelections(entities, this); + } +} + +function sortSelectedEntities(selected) { + var sortedEntities = selected.slice(); + var begin = 0; + while (begin < sortedEntities.length) { + var elementRemoved = false; + var next = begin + 1; + while (next < sortedEntities.length) { + var beginID = sortedEntities[begin]; + var nextID = sortedEntities[next]; + + if (Entities.isChildOfParent(beginID, nextID)) { + sortedEntities[begin] = nextID; + sortedEntities[next] = beginID; + sortedEntities.splice(next, 1); + elementRemoved = true; + break; + } else if (Entities.isChildOfParent(nextID, beginID)) { + sortedEntities.splice(next, 1); + elementRemoved = true; + break; + } + next++; + } + if (!elementRemoved) { + begin++; + } + } + return sortedEntities; +} + +function recursiveDelete(entities, childrenList, deletedIDs, entityHostType) { + var wantDebug = false; + var entitiesLength = entities.length; + var initialPropertySets = Entities.getMultipleEntityProperties(entities); + var entityHostTypes = Entities.getMultipleEntityProperties(entities, 'entityHostType'); + for (var i = 0; i < entitiesLength; ++i) { + var entityID = entities[i]; + + if (entityHostTypes[i].entityHostType !== entityHostType) { + if (wantDebug) { + console.log("Skipping deletion of entity " + entityID + " with conflicting entityHostType: " + + entityHostTypes[i].entityHostType + ", expected: " + entityHostType); + } + continue; + } + + var children = Entities.getChildrenIDs(entityID); + var grandchildrenList = []; + recursiveDelete(children, grandchildrenList, deletedIDs, entityHostType); + childrenList.push({ + entityID: entityID, + properties: initialPropertySets[i], + children: grandchildrenList + }); + deletedIDs.push(entityID); + Entities.deleteEntity(entityID); + } +} + +function unparentSelectedEntities() { + if (SelectionManager.hasSelection()) { + var selectedEntities = selectionManager.selections; + var parentCheck = false; + + if (selectedEntities.length < 1) { + Window.notifyEditError("You must have an entity selected in order to unparent it."); + return; + } + selectedEntities.forEach(function (id, index) { + var parentId = Entities.getEntityProperties(id, ["parentID"]).parentID; + if (parentId !== null && parentId.length > 0 && parentId !== Uuid.NULL) { + parentCheck = true; + } + Entities.editEntity(id, {parentID: null}); + return true; + }); + if (parentCheck) { + if (selectedEntities.length > 1) { + Window.notify("Entities unparented"); + } else { + Window.notify("Entity unparented"); + } + } else { + if (selectedEntities.length > 1) { + Window.notify("Selected Entities have no parents"); + } else { + Window.notify("Selected Entity does not have a parent"); + } + } + } else { + Window.notifyEditError("You have nothing selected to unparent"); + } +} +function parentSelectedEntities() { + if (SelectionManager.hasSelection()) { + var selectedEntities = selectionManager.selections; + if (selectedEntities.length <= 1) { + Window.notifyEditError("You must have multiple entities selected in order to parent them"); + return; + } + var parentCheck = false; + var lastEntityId = selectedEntities[selectedEntities.length - 1]; + selectedEntities.forEach(function (id, index) { + if (lastEntityId !== id) { + var parentId = Entities.getEntityProperties(id, ["parentID"]).parentID; + if (parentId !== lastEntityId) { + parentCheck = true; + } + Entities.editEntity(id, {parentID: lastEntityId}); + } + }); + + if (parentCheck) { + Window.notify("Entities parented"); + } else { + Window.notify("Entities are already parented to last"); + } + } else { + Window.notifyEditError("You have nothing selected to parent"); + } +} +function deleteSelectedEntities() { + if (SelectionManager.hasSelection()) { + var deletedIDs = []; + + SelectionManager.saveProperties(); + var savedProperties = []; + var newSortedSelection = sortSelectedEntities(selectionManager.selections); + var entityHostTypes = Entities.getMultipleEntityProperties(newSortedSelection, 'entityHostType'); + for (var i = 0; i < newSortedSelection.length; ++i) { + var entityID = newSortedSelection[i]; + var initialProperties = SelectionManager.savedProperties[entityID]; + if (initialProperties.locked || + (initialProperties.avatarEntity && initialProperties.owningAvatarID !== MyAvatar.sessionUUID)) { + continue; + } + var children = Entities.getChildrenIDs(entityID); + var childList = []; + recursiveDelete(children, childList, deletedIDs, entityHostTypes[i].entityHostType); + savedProperties.push({ + entityID: entityID, + properties: initialProperties, + children: childList + }); + deletedIDs.push(entityID); + Entities.deleteEntity(entityID); + } + + if (savedProperties.length > 0) { + SelectionManager.clearSelections(this); + pushCommandForSelections([], savedProperties); + entityListTool.deleteEntities(deletedIDs); + } + } +} + +function toggleSelectedEntitiesLocked() { + if (SelectionManager.hasSelection()) { + var locked = !Entities.getEntityProperties(SelectionManager.selections[0], ["locked"]).locked; + for (var i = 0; i < selectionManager.selections.length; i++) { + var entityID = SelectionManager.selections[i]; + Entities.editEntity(entityID, { + locked: locked + }); + } + entityListTool.sendUpdate(); + selectionManager._update(false, this); + } +} + +function toggleSelectedEntitiesVisible() { + if (SelectionManager.hasSelection()) { + var visible = !Entities.getEntityProperties(SelectionManager.selections[0], ["visible"]).visible; + for (var i = 0; i < selectionManager.selections.length; i++) { + var entityID = SelectionManager.selections[i]; + Entities.editEntity(entityID, { + visible: visible + }); + } + entityListTool.sendUpdate(); + selectionManager._update(false, this); + } +} + +function onFileSaveChanged(filename) { + Window.saveFileChanged.disconnect(onFileSaveChanged); + if (filename !== "") { + var success = Clipboard.exportEntities(filename, selectionManager.selections); + if (!success) { + Window.notifyEditError("Export failed."); + } + } +} + +function onFileOpenChanged(filename) { + // disconnect the event, otherwise the requests will stack up + try { + // Not all calls to onFileOpenChanged() connect an event. + Window.browseChanged.disconnect(onFileOpenChanged); + } catch (e) { + // Ignore. + } + + var importURL = null; + if (filename !== "") { + importURL = filename; + if (!/^(http|https):\/\//.test(filename)) { + importURL = "file:///" + importURL; + } + } + if (importURL) { + if (!isActive && (Entities.canRez() && Entities.canRezTmp() && Entities.canRezCertified() && Entities.canRezTmpCertified())) { + toolBar.toggle(); + } + importSVO(importURL); + } +} + +function onPromptTextChanged(prompt) { + Window.promptTextChanged.disconnect(onPromptTextChanged); + if (prompt !== "") { + if (!isActive && (Entities.canRez() && Entities.canRezTmp() && Entities.canRezCertified() && Entities.canRezTmpCertified())) { + toolBar.toggle(); + } + importSVO(prompt); + } +} + +function handleMenuEvent(menuItem) { + if (menuItem === "Allow Selecting of Small Models") { + allowSmallModels = Menu.isOptionChecked("Allow Selecting of Small Models"); + } else if (menuItem === "Allow Selecting of Large Models") { + allowLargeModels = Menu.isOptionChecked("Allow Selecting of Large Models"); + } else if (menuItem === "Allow Selecting of Lights") { + Entities.setLightsArePickable(Menu.isOptionChecked("Allow Selecting of Lights")); + } else if (menuItem === "Delete") { + deleteSelectedEntities(); + } else if (menuItem === "Undo") { + undoHistory.undo(); + } else if (menuItem === "Redo") { + undoHistory.redo(); + } else if (menuItem === "Parent Entity to Last") { + parentSelectedEntities(); + } else if (menuItem === "Unparent Entity") { + unparentSelectedEntities(); + } else if (menuItem === "Export Entities") { + if (!selectionManager.hasSelection()) { + Window.notifyEditError("No entities have been selected."); + } else { + Window.saveFileChanged.connect(onFileSaveChanged); + Window.saveAsync("Select Where to Save", "", "*.json"); + } + } else if (menuItem === "Import Entities" || menuItem === "Import Entities from URL") { + if (menuItem === "Import Entities") { + Window.browseChanged.connect(onFileOpenChanged); + Window.browseAsync("Select Model to Import", "", "*.json"); + } else { + Window.promptTextChanged.connect(onPromptTextChanged); + Window.promptAsync("URL of SVO to import", ""); + } + } else if (menuItem === "Select All Entities In Box") { + selectAllEntitiesInCurrentSelectionBox(false); + } else if (menuItem === "Select All Entities Touching Box") { + selectAllEntitiesInCurrentSelectionBox(true); + } else if (menuItem === MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE) { + entityIconOverlayManager.setVisible(isActive && Menu.isOptionChecked(MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE)); + } else if (menuItem === MENU_SHOW_ZONES_IN_EDIT_MODE) { + Entities.setDrawZoneBoundaries(isActive && Menu.isOptionChecked(MENU_SHOW_ZONES_IN_EDIT_MODE)); + } else if (menuItem === MENU_CREATE_ENTITIES_GRABBABLE) { + Settings.setValue(SETTING_EDIT_PREFIX + menuItem, Menu.isOptionChecked(menuItem)); + } + tooltip.show(false); +} + +var HALF_TREE_SCALE = 16384; + +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 + delta)); + } else { + position = Vec3.sum(MyAvatar.position, Vec3.multiply(Quat.getForward(MyAvatar.orientation), CREATE_DISTANCE + delta)); + } + + if (position.x > HALF_TREE_SCALE || position.y > HALF_TREE_SCALE || position.z > HALF_TREE_SCALE) { + return null; + } + return position; +} + +function importSVO(importURL) { + if (!Entities.canRez() && !Entities.canRezTmp() && + !Entities.canRezCertified() && !Entities.canRezTmpCertified()) { + Window.notifyEditError(INSUFFICIENT_PERMISSIONS_IMPORT_ERROR_MSG); + return; + } + + Overlays.editOverlay(importingSVOTextOverlay, { + visible: true + }); + Overlays.editOverlay(importingSVOImageOverlay, { + visible: true + }); + + var success = Clipboard.importEntities(importURL); + + if (success) { + var VERY_LARGE = 10000; + var isLargeImport = Clipboard.getClipboardContentsLargestDimension() >= VERY_LARGE; + var position = Vec3.ZERO; + if (!isLargeImport) { + position = getPositionToCreateEntity(Clipboard.getClipboardContentsLargestDimension() / 2); + } + 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 deltaPosition = Vec3.ZERO; + var entityPositions = []; + var entityParentIDs = []; + + var propType = Entities.getEntityProperties(pastedEntityIDs[0], ["type"]).type; + var NO_ADJUST_ENTITY_TYPES = ["Zone", "Light", "ParticleEffect"]; + if (NO_ADJUST_ENTITY_TYPES.indexOf(propType) === -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. + for (var i = 0, length = pastedEntityIDs.length; i < length; i++) { + var curLoopEntityProps = Entities.getEntityProperties(pastedEntityIDs[i], ["position", "dimensions", + "registrationPoint", "rotation", "parentID"]); + var adjustedPosition = adjustPositionPerBoundingBox(targetPosition, targetDirection, + curLoopEntityProps.registrationPoint, curLoopEntityProps.dimensions, curLoopEntityProps.rotation); + var delta = Vec3.subtract(adjustedPosition, curLoopEntityProps.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] = curLoopEntityProps.position; + entityParentIDs[i] = curLoopEntityProps.parentID; + } + deltaPerpendicular = Vec3.multiply(1 / pastedEntityIDs.length, deltaPerpendicular); + deltaPosition = Vec3.sum(Vec3.multiply(deltaParallel, targetDirection), deltaPerpendicular); + } + + if (grid.getSnapToGrid()) { + var firstEntityProps = Entities.getEntityProperties(pastedEntityIDs[0], ["position", "dimensions", + "registrationPoint"]); + var positionPreSnap = Vec3.sum(deltaPosition, firstEntityProps.position); + position = grid.snapToSurface(grid.snapToGrid(positionPreSnap, false, firstEntityProps.dimensions, + firstEntityProps.registrationPoint), firstEntityProps.dimensions, firstEntityProps.registrationPoint); + deltaPosition = Vec3.subtract(position, firstEntityProps.position); + } + + if (!Vec3.equal(deltaPosition, Vec3.ZERO)) { + for (var editEntityIndex = 0, numEntities = pastedEntityIDs.length; editEntityIndex < numEntities; editEntityIndex++) { + if (Uuid.isNull(entityParentIDs[editEntityIndex])) { + Entities.editEntity(pastedEntityIDs[editEntityIndex], { + position: Vec3.sum(deltaPosition, entityPositions[editEntityIndex]) + }); + } + } + } + } + + if (isActive) { + selectionManager.setSelections(pastedEntityIDs, this); + } + } else { + Window.notifyEditError("Can't import entities: entities would be out of bounds."); + } + } else { + Window.notifyEditError("There was an error importing the entity file."); + } + + Overlays.editOverlay(importingSVOTextOverlay, { + visible: false + }); + Overlays.editOverlay(importingSVOImageOverlay, { + visible: false + }); +} +Window.svoImportRequested.connect(importSVO); + +Menu.menuItemEvent.connect(handleMenuEvent); + +var keyPressEvent = function (event) { + if (isActive) { + cameraManager.keyPressEvent(event); + } +}; +var keyReleaseEvent = function (event) { + if (isActive) { + cameraManager.keyReleaseEvent(event); + } +}; +Controller.keyReleaseEvent.connect(keyReleaseEvent); +Controller.keyPressEvent.connect(keyPressEvent); + +function deleteKey(value) { + if (value === 0) { // on release + deleteSelectedEntities(); + } +} +function deselectKey(value) { + if (value === 0) { // on release + selectionManager.clearSelections(this); + } +} +function toggleKey(value) { + if (value === 0) { // on release + selectionDisplay.toggleSpaceMode(); + } +} +function focusKey(value) { + if (value === 0) { // on release + cameraManager.enable(); + if (selectionManager.hasSelection()) { + cameraManager.focus(selectionManager.worldPosition, selectionManager.worldDimensions, + Menu.isOptionChecked(MENU_EASE_ON_FOCUS)); + } + } +} +function gridKey(value) { + if (value === 0) { // on release + if (selectionManager.hasSelection()) { + grid.moveToSelection(); + } + } +} +function recursiveAdd(newParentID, parentData) { + if (parentData.children !== undefined) { + var children = parentData.children; + for (var i = 0; i < children.length; i++) { + var childProperties = children[i].properties; + childProperties.parentID = newParentID; + var newChildID = Entities.addEntity(childProperties); + recursiveAdd(newChildID, children[i]); + } + } +} + +var UndoHistory = function(onUpdate) { + this.history = []; + // The current position is the index of the last executed action in the history array. + // + // -1 0 1 2 3 <- position + // A B C D <- actions in history + // + // If our lastExecutedIndex is 1, the last executed action is B. + // If we undo, we undo B (index 1). If we redo, we redo C (index 2). + this.lastExecutedIndex = -1; + this.enabled = true; + this.onUpdate = onUpdate; +}; + +UndoHistory.prototype.pushCommand = function(undoFn, undoArgs, redoFn, redoArgs) { + if (!this.enabled) { + return; + } + // Delete any history following the last executed action. + this.history.splice(this.lastExecutedIndex + 1); + this.history.push({ + undoFn: undoFn, + undoArgs: undoArgs, + redoFn: redoFn, + redoArgs: redoArgs + }); + this.lastExecutedIndex++; + + if (this.onUpdate) { + this.onUpdate(); + } +}; +UndoHistory.prototype.setEnabled = function(enabled) { + this.enabled = enabled; + if (this.onUpdate) { + this.onUpdate(); + } +}; +UndoHistory.prototype.canUndo = function() { + return this.enabled && this.lastExecutedIndex >= 0; +}; +UndoHistory.prototype.canRedo = function() { + return this.enabled && this.lastExecutedIndex < this.history.length - 1; +}; +UndoHistory.prototype.undo = function() { + if (!this.canUndo()) { + console.warn("Cannot undo action"); + return; + } + + var command = this.history[this.lastExecutedIndex]; + command.undoFn(command.undoArgs); + this.lastExecutedIndex--; + + if (this.onUpdate) { + this.onUpdate(); + } +}; +UndoHistory.prototype.redo = function() { + if (!this.canRedo()) { + console.warn("Cannot redo action"); + return; + } + + var command = this.history[this.lastExecutedIndex + 1]; + command.redoFn(command.redoArgs); + this.lastExecutedIndex++; + + if (this.onUpdate) { + this.onUpdate(); + } +}; + +function updateUndoRedoMenuItems() { + Menu.setMenuEnabled("Edit > Undo", undoHistory.canUndo()); + Menu.setMenuEnabled("Edit > Redo", undoHistory.canRedo()); +} +var undoHistory = new UndoHistory(updateUndoRedoMenuItems); +updateUndoRedoMenuItems(); + +// When an entity has been deleted we need a way to "undo" this deletion. Because it's not currently +// possible to create an entity with a specific id, earlier undo commands to the deleted entity +// will fail if there isn't a way to find the new entity id. +var DELETED_ENTITY_MAP = {}; + +function applyEntityProperties(data) { + var editEntities = data.editEntities; + var createEntities = data.createEntities; + var deleteEntities = data.deleteEntities; + var selectedEntityIDs = []; + var selectEdits = createEntities.length === 0 || !data.selectCreated; + var i, entityID, entityProperties; + for (i = 0; i < createEntities.length; i++) { + entityID = createEntities[i].entityID; + entityProperties = createEntities[i].properties; + var newEntityID = Entities.addEntity(entityProperties); + recursiveAdd(newEntityID, createEntities[i]); + DELETED_ENTITY_MAP[entityID] = newEntityID; + if (data.selectCreated) { + selectedEntityIDs.push(newEntityID); + } + } + for (i = 0; i < deleteEntities.length; i++) { + entityID = deleteEntities[i].entityID; + if (DELETED_ENTITY_MAP[entityID] !== undefined) { + entityID = DELETED_ENTITY_MAP[entityID]; + } + Entities.deleteEntity(entityID); + var index = selectedEntityIDs.indexOf(entityID); + if (index >= 0) { + selectedEntityIDs.splice(index, 1); + } + } + for (i = 0; i < editEntities.length; i++) { + entityID = editEntities[i].entityID; + if (DELETED_ENTITY_MAP[entityID] !== undefined) { + entityID = DELETED_ENTITY_MAP[entityID]; + } + entityProperties = editEntities[i].properties; + if (entityProperties !== null) { + Entities.editEntity(entityID, entityProperties); + } + if (selectEdits) { + selectedEntityIDs.push(entityID); + } + } + + // We might be getting an undo while edit.js is disabled. If that is the case, don't set + // our selections, causing the edit widgets to display. + if (isActive) { + selectionManager.setSelections(selectedEntityIDs, this); + selectionManager.saveProperties(); + } +} + +// For currently selected entities, push a command to the UndoStack that uses the current entity properties for the +// redo command, and the saved properties for the undo command. Also, include create and delete entity data. +function pushCommandForSelections(createdEntityData, deletedEntityData, doNotSaveEditProperties) { + doNotSaveEditProperties = false; + var undoData = { + editEntities: [], + createEntities: deletedEntityData || [], + deleteEntities: createdEntityData || [], + selectCreated: true + }; + var redoData = { + editEntities: [], + createEntities: createdEntityData || [], + deleteEntities: deletedEntityData || [], + selectCreated: true + }; + for (var i = 0; i < SelectionManager.selections.length; i++) { + var entityID = SelectionManager.selections[i]; + var initialProperties = SelectionManager.savedProperties[entityID]; + var currentProperties = null; + if (!initialProperties) { + continue; + } + + if (doNotSaveEditProperties) { + initialProperties = null; + } else { + currentProperties = Entities.getEntityProperties(entityID); + } + + undoData.editEntities.push({ + entityID: entityID, + properties: initialProperties + }); + redoData.editEntities.push({ + entityID: entityID, + properties: currentProperties + }); + } + undoHistory.pushCommand(applyEntityProperties, undoData, applyEntityProperties, redoData); +} + +var ServerScriptStatusMonitor = function(entityID, statusCallback) { + var self = this; + + self.entityID = entityID; + self.active = true; + self.sendRequestTimerID = null; + + var onStatusReceived = function(success, isRunning, status, errorInfo) { + if (self.active) { + statusCallback({ + statusRetrieved: success, + isRunning: isRunning, + status: status, + errorInfo: errorInfo + }); + self.sendRequestTimerID = Script.setTimeout(function() { + if (self.active) { + Entities.getServerScriptStatus(entityID, onStatusReceived); + } + }, 1000); + } + }; + self.stop = function() { + self.active = false; + }; + + Entities.getServerScriptStatus(entityID, onStatusReceived); +}; + +var PropertiesTool = function (opts) { + var that = {}; + + var webView = null; + webView = Tablet.getTablet("com.highfidelity.interface.tablet.system"); + webView.setVisible = function(value) {}; + + var visible = false; + + // This keeps track of the last entity ID that was selected. If multiple entities + // are selected or if no entity is selected this will be `null`. + var currentSelectedEntityID = null; + var statusMonitor = null; + var blockPropertyUpdates = false; + + that.setVisible = function (newVisible) { + visible = newVisible; + webView.setVisible(shouldUseEditTabletApp() && visible); + createToolsWindow.setVisible(!shouldUseEditTabletApp() && visible); + }; + + that.setVisible(false); + + function emitScriptEvent(data) { + var dataString = JSON.stringify(data); + webView.emitScriptEvent(dataString); + createToolsWindow.emitScriptEvent(dataString); + } + + function updateScriptStatus(info) { + info.type = "server_script_status"; + emitScriptEvent(info); + } + + function resetScriptStatus() { + updateScriptStatus({ + statusRetrieved: undefined, + isRunning: undefined, + status: "", + errorInfo: "" + }); + } + + that.setSpaceMode = function(spaceMode) { + emitScriptEvent({ + type: 'setSpaceMode', + spaceMode: spaceMode + }) + }; + + function updateSelections(selectionUpdated, caller) { + if (blockPropertyUpdates) { + return; + } + + var data = { + type: 'update', + spaceMode: selectionDisplay.getSpaceMode(), + isPropertiesToolUpdate: caller === this, + }; + + if (selectionUpdated) { + resetScriptStatus(); + + if (selectionManager.selections.length !== 1) { + if (statusMonitor !== null) { + statusMonitor.stop(); + statusMonitor = null; + } + currentSelectedEntityID = null; + } else if (currentSelectedEntityID !== selectionManager.selections[0]) { + if (statusMonitor !== null) { + statusMonitor.stop(); + } + var entityID = selectionManager.selections[0]; + currentSelectedEntityID = entityID; + statusMonitor = new ServerScriptStatusMonitor(entityID, updateScriptStatus); + } + } + + var selections = []; + for (var i = 0; i < selectionManager.selections.length; i++) { + var entity = {}; + entity.id = selectionManager.selections[i]; + entity.properties = Entities.getEntityProperties(selectionManager.selections[i]); + if (entity.properties.rotation !== undefined) { + entity.properties.rotation = Quat.safeEulerAngles(entity.properties.rotation); + } + if (entity.properties.localRotation !== undefined) { + entity.properties.localRotation = Quat.safeEulerAngles(entity.properties.localRotation); + } + if (entity.properties.emitOrientation !== undefined) { + entity.properties.emitOrientation = Quat.safeEulerAngles(entity.properties.emitOrientation); + } + if (entity.properties.keyLight !== undefined && entity.properties.keyLight.direction !== undefined) { + entity.properties.keyLight.direction = Vec3.toPolar(entity.properties.keyLight.direction); + entity.properties.keyLight.direction.z = 0.0; + } + selections.push(entity); + } + data.selections = selections; + + emitScriptEvent(data); + } + selectionManager.addEventListener(updateSelections, this); + + + var onWebEventReceived = function(data) { + try { + data = JSON.parse(data); + } catch(e) { + return; + } + var i, properties, dY, diff, newPosition; + if (data.type === "update") { + + if (data.properties || data.propertiesMap) { + var propertiesMap = data.propertiesMap; + if (propertiesMap === undefined) { + propertiesMap = [{ + entityIDs: data.ids, + properties: data.properties, + }]; + } + + var sendListUpdate = false; + propertiesMap.forEach(function(propertiesObject) { + var properties = propertiesObject.properties; + var updateEntityIDs = propertiesObject.entityIDs; + if (properties.dynamic === false) { + // this object is leaving dynamic, so we zero its velocities + properties.localVelocity = Vec3.ZERO; + properties.localAngularVelocity = Vec3.ZERO; + } + if (properties.rotation !== undefined) { + properties.rotation = Quat.fromVec3Degrees(properties.rotation); + } + if (properties.localRotation !== undefined) { + properties.localRotation = Quat.fromVec3Degrees(properties.localRotation); + } + if (properties.emitOrientation !== undefined) { + properties.emitOrientation = Quat.fromVec3Degrees(properties.emitOrientation); + } + if (properties.keyLight !== undefined && properties.keyLight.direction !== undefined) { + var currentKeyLightDirection = Vec3.toPolar(Entities.getEntityProperties(selectionManager.selections[0], ['keyLight.direction']).keyLight.direction); + if (properties.keyLight.direction.x === undefined) { + properties.keyLight.direction.x = currentKeyLightDirection.x; + } + if (properties.keyLight.direction.y === undefined) { + properties.keyLight.direction.y = currentKeyLightDirection.y; + } + properties.keyLight.direction = Vec3.fromPolar(properties.keyLight.direction.x, properties.keyLight.direction.y); + } + + updateEntityIDs.forEach(function (entityID) { + Entities.editEntity(entityID, properties); + }); + + if (properties.name !== undefined || properties.modelURL !== undefined || properties.materialURL !== undefined || + properties.visible !== undefined || properties.locked !== undefined) { + + sendListUpdate = true; + } + + }); + if (sendListUpdate) { + entityListTool.sendUpdate(); + } + } + + + if (data.onlyUpdateEntities) { + blockPropertyUpdates = true; + } else { + pushCommandForSelections(); + SelectionManager.saveProperties(); + } + selectionManager._update(false, this); + blockPropertyUpdates = false; + } else if (data.type === 'saveUserData' || data.type === 'saveMaterialData') { + data.ids.forEach(function(entityID) { + Entities.editEntity(entityID, data.properties); + }); + } else if (data.type === "showMarketplace") { + showMarketplace(); + } else if (data.type === "action") { + if (data.action === "moveSelectionToGrid") { + if (selectionManager.hasSelection()) { + selectionManager.saveProperties(); + dY = grid.getOrigin().y - (selectionManager.worldPosition.y - selectionManager.worldDimensions.y / 2); + diff = { + x: 0, + y: dY, + z: 0 + }; + for (i = 0; i < selectionManager.selections.length; i++) { + properties = selectionManager.savedProperties[selectionManager.selections[i]]; + newPosition = Vec3.sum(properties.position, diff); + Entities.editEntity(selectionManager.selections[i], { + position: newPosition + }); + } + pushCommandForSelections(); + selectionManager._update(false, this); + } + } else if (data.action === "moveAllToGrid") { + if (selectionManager.hasSelection()) { + selectionManager.saveProperties(); + for (i = 0; i < selectionManager.selections.length; i++) { + properties = selectionManager.savedProperties[selectionManager.selections[i]]; + var bottomY = properties.boundingBox.center.y - properties.boundingBox.dimensions.y / 2; + dY = grid.getOrigin().y - bottomY; + diff = { + x: 0, + y: dY, + z: 0 + }; + newPosition = Vec3.sum(properties.position, diff); + Entities.editEntity(selectionManager.selections[i], { + position: newPosition + }); + } + pushCommandForSelections(); + selectionManager._update(false, this); + } + } else if (data.action === "resetToNaturalDimensions") { + if (selectionManager.hasSelection()) { + selectionManager.saveProperties(); + for (i = 0; i < selectionManager.selections.length; i++) { + properties = selectionManager.savedProperties[selectionManager.selections[i]]; + var naturalDimensions = properties.naturalDimensions; + + // If any of the natural dimensions are not 0, resize + if (properties.type === "Model" && naturalDimensions.x === 0 && naturalDimensions.y === 0 && + naturalDimensions.z === 0) { + Window.notifyEditError("Cannot reset entity to its natural dimensions: Model URL" + + " is invalid or the model has not yet been loaded."); + } else { + Entities.editEntity(selectionManager.selections[i], { + dimensions: properties.naturalDimensions + }); + } + } + pushCommandForSelections(); + selectionManager._update(false, this); + } + } else if (data.action === "previewCamera") { + if (selectionManager.hasSelection()) { + Camera.mode = "entity"; + Camera.cameraEntity = selectionManager.selections[0]; + } + } else if (data.action === "rescaleDimensions") { + var multiplier = data.percentage / 100.0; + if (selectionManager.hasSelection()) { + selectionManager.saveProperties(); + for (i = 0; i < selectionManager.selections.length; i++) { + properties = selectionManager.savedProperties[selectionManager.selections[i]]; + Entities.editEntity(selectionManager.selections[i], { + dimensions: Vec3.multiply(multiplier, properties.dimensions) + }); + } + pushCommandForSelections(); + selectionManager._update(false, this); + } + } else if (data.action === "reloadClientScripts") { + if (selectionManager.hasSelection()) { + var timestamp = Date.now(); + for (i = 0; i < selectionManager.selections.length; i++) { + Entities.editEntity(selectionManager.selections[i], { + scriptTimestamp: timestamp + }); + } + } + } else if (data.action === "reloadServerScripts") { + if (selectionManager.hasSelection()) { + for (i = 0; i < selectionManager.selections.length; i++) { + Entities.reloadServerScripts(selectionManager.selections[i]); + } + } + } + } else if (data.type === "propertiesPageReady") { + updateSelections(true); + } else if (data.type === "tooltipsRequest") { + emitScriptEvent({ + type: 'tooltipsReply', + tooltips: Script.require('./assets/data/createAppTooltips.json'), + hmdActive: HMD.active, + }); + } else if (data.type === "propertyRangeRequest") { + var propertyRanges = {}; + data.properties.forEach(function (property) { + propertyRanges[property] = Entities.getPropertyInfo(property); + }); + emitScriptEvent({ + type: 'propertyRangeReply', + propertyRanges: propertyRanges, + }); + } else if (data.type === "materialTargetRequest") { + var parentModelData; + var properties = Entities.getEntityProperties(data.entityID, ["type", "parentID"]); + if (properties.type === "Material" && properties.parentID !== Uuid.NULL) { + var parentType = Entities.getEntityProperties(properties.parentID, ["type"]).type; + if (parentType === "Model" || Entities.getNestableType(properties.parentID) === "avatar") { + parentModelData = Graphics.getModel(properties.parentID); + } else if (parentType === "Shape" || parentType === "Box" || parentType === "Sphere") { + parentModelData = {}; + parentModelData.numMeshes = 1; + parentModelData.materialNames = []; + } + } + emitScriptEvent({ + type: 'materialTargetReply', + entityID: data.entityID, + materialTargetData: parentModelData, + }); + } else if (data.type === "zoneListRequest") { + emitScriptEvent({ + type: 'zoneListRequest', + zones: getExistingZoneList() + }); + } + }; + + HMD.displayModeChanged.connect(function() { + emitScriptEvent({ + type: 'hmdActiveChanged', + hmdActive: HMD.active, + }); + }); + + createToolsWindow.webEventReceived.addListener(this, onWebEventReceived); + + webView.webEventReceived.connect(this, onWebEventReceived); + + return that; +}; + + +var PopupMenu = function () { + var self = this; + + var MENU_ITEM_HEIGHT = 21; + var MENU_ITEM_SPACING = 1; + var TEXT_MARGIN = 7; + + var overlays = []; + var overlayInfo = {}; + + var visible = false; + + var upColor = { + red: 0, + green: 0, + blue: 0 + }; + var downColor = { + red: 192, + green: 192, + blue: 192 + }; + var overColor = { + red: 128, + green: 128, + blue: 128 + }; + + self.onSelectMenuItem = function () {}; + + self.addMenuItem = function (name) { + var id = Overlays.addOverlay("text", { + text: name, + backgroundAlpha: 1.0, + backgroundColor: upColor, + topMargin: TEXT_MARGIN, + leftMargin: TEXT_MARGIN, + width: 210, + height: MENU_ITEM_HEIGHT, + font: { + size: 12 + }, + visible: false + }); + overlays.push(id); + overlayInfo[id] = { + name: name + }; + return id; + }; + + self.updateMenuItemText = function (id, newText) { + Overlays.editOverlay(id, { + text: newText + }); + }; + + self.setPosition = function (x, y) { + for (var key in overlayInfo) { + Overlays.editOverlay(key, { + x: x, + y: y + }); + y += MENU_ITEM_HEIGHT + MENU_ITEM_SPACING; + } + }; + + self.onSelected = function () {}; + + var pressingOverlay = null; + var hoveringOverlay = null; + + self.mousePressEvent = function (event) { + if (event.isLeftButton) { + var overlay = Overlays.getOverlayAtPoint({ + x: event.x, + y: event.y + }); + if (overlay in overlayInfo) { + pressingOverlay = overlay; + Overlays.editOverlay(pressingOverlay, { + backgroundColor: downColor + }); + } else { + self.hide(); + } + return false; + } + }; + self.mouseMoveEvent = function (event) { + if (visible) { + var overlay = Overlays.getOverlayAtPoint({ + x: event.x, + y: event.y + }); + if (!pressingOverlay) { + if (hoveringOverlay !== null && overlay !== hoveringOverlay) { + Overlays.editOverlay(hoveringOverlay, { + backgroundColor: upColor + }); + hoveringOverlay = null; + } + if (overlay !== hoveringOverlay && overlay in overlayInfo) { + Overlays.editOverlay(overlay, { + backgroundColor: overColor + }); + hoveringOverlay = overlay; + } + } + } + return false; + }; + self.mouseReleaseEvent = function (event) { + var overlay = Overlays.getOverlayAtPoint({ + x: event.x, + y: event.y + }); + if (pressingOverlay !== null && pressingOverlay !== undefined) { + if (overlay === pressingOverlay) { + self.onSelectMenuItem(overlayInfo[overlay].name); + } + Overlays.editOverlay(pressingOverlay, { + backgroundColor: upColor + }); + pressingOverlay = null; + self.hide(); + } + }; + + self.setVisible = function (newVisible) { + if (newVisible !== visible) { + visible = newVisible; + for (var key in overlayInfo) { + Overlays.editOverlay(key, { + visible: newVisible + }); + } + } + }; + self.show = function () { + self.setVisible(true); + }; + self.hide = function () { + self.setVisible(false); + }; + + function cleanup() { + ContextOverlay.enabled = true; + for (var i = 0; i < overlays.length; i++) { + Overlays.deleteOverlay(overlays[i]); + } + Controller.mousePressEvent.disconnect(self.mousePressEvent); + Controller.mouseMoveEvent.disconnect(self.mouseMoveEvent); + Controller.mouseReleaseEvent.disconnect(self.mouseReleaseEvent); + + Entities.canRezChanged.disconnect(checkEditPermissionsAndUpdate); + Entities.canRezTmpChanged.disconnect(checkEditPermissionsAndUpdate); + Entities.canRezCertifiedChanged.disconnect(checkEditPermissionsAndUpdate); + Entities.canRezTmpCertifiedChanged.disconnect(checkEditPermissionsAndUpdate); + } + + Controller.mousePressEvent.connect(self.mousePressEvent); + Controller.mouseMoveEvent.connect(self.mouseMoveEvent); + Controller.mouseReleaseEvent.connect(self.mouseReleaseEvent); + Script.scriptEnding.connect(cleanup); + + return this; +}; + +function whenPressed(fn) { + return function(value) { + if (value > 0) { + fn(); + } + }; +} + +function whenReleased(fn) { + return function(value) { + if (value === 0) { + fn(); + } + }; +} + +var isOnMacPlatform = Controller.getValue(Controller.Hardware.Application.PlatformMac); + +var mapping = Controller.newMapping(CONTROLLER_MAPPING_NAME); +if (isOnMacPlatform) { + mapping.from([Controller.Hardware.Keyboard.Backspace]).to(deleteKey); +} else { + mapping.from([Controller.Hardware.Keyboard.Delete]).to(deleteKey); +} +mapping.from([Controller.Hardware.Keyboard.T]).to(toggleKey); +mapping.from([Controller.Hardware.Keyboard.F]).to(focusKey); +mapping.from([Controller.Hardware.Keyboard.G]).to(gridKey); +mapping.from([Controller.Hardware.Keyboard.X]) + .when([Controller.Hardware.Keyboard.Control]) + .to(whenReleased(function() { selectionManager.cutSelectedEntities() })); +mapping.from([Controller.Hardware.Keyboard.C]) + .when([Controller.Hardware.Keyboard.Control]) + .to(whenReleased(function() { selectionManager.copySelectedEntities() })); +mapping.from([Controller.Hardware.Keyboard.V]) + .when([Controller.Hardware.Keyboard.Control]) + .to(whenReleased(function() { selectionManager.pasteEntities() })); +mapping.from([Controller.Hardware.Keyboard.D]) + .when([Controller.Hardware.Keyboard.Control]) + .to(whenReleased(function() { selectionManager.duplicateSelection() })); + +// Bind undo to ctrl-shift-z to maintain backwards-compatibility +mapping.from([Controller.Hardware.Keyboard.Z]) + .when([Controller.Hardware.Keyboard.Control, Controller.Hardware.Keyboard.Shift]) + .to(whenPressed(function() { undoHistory.redo() })); + + +mapping.from([Controller.Hardware.Keyboard.P]) + .when([Controller.Hardware.Keyboard.Control, Controller.Hardware.Keyboard.Shift]) + .to(whenReleased(function() { unparentSelectedEntities(); })); + +mapping.from([Controller.Hardware.Keyboard.P]) + .when([Controller.Hardware.Keyboard.Control, !Controller.Hardware.Keyboard.Shift]) + .to(whenReleased(function() { parentSelectedEntities(); })); + +keyUpEventFromUIWindow = function(keyUpEvent) { + var WANT_DEBUG_MISSING_SHORTCUTS = false; + + var pressedValue = 0.0; + + if ((!isOnMacPlatform && keyUpEvent.keyCodeString === "Delete") + || (isOnMacPlatform && keyUpEvent.keyCodeString === "Backspace")) { + + deleteKey(pressedValue); + } else if (keyUpEvent.keyCodeString === "T") { + toggleKey(pressedValue); + } else if (keyUpEvent.keyCodeString === "F") { + focusKey(pressedValue); + } else if (keyUpEvent.keyCodeString === "G") { + gridKey(pressedValue); + } else if (keyUpEvent.controlKey && keyUpEvent.keyCodeString === "X") { + selectionManager.cutSelectedEntities(); + } else if (keyUpEvent.controlKey && keyUpEvent.keyCodeString === "C") { + selectionManager.copySelectedEntities(); + } else if (keyUpEvent.controlKey && keyUpEvent.keyCodeString === "V") { + selectionManager.pasteEntities(); + } else if (keyUpEvent.controlKey && keyUpEvent.keyCodeString === "D") { + selectionManager.duplicateSelection(); + } else if (!isOnMacPlatform && keyUpEvent.controlKey && !keyUpEvent.shiftKey && keyUpEvent.keyCodeString === "Z") { + undoHistory.undo(); // undo is only handled via handleMenuItem on Mac + } else if (keyUpEvent.controlKey && !keyUpEvent.shiftKey && keyUpEvent.keyCodeString === "P") { + parentSelectedEntities(); + } else if (keyUpEvent.controlKey && keyUpEvent.shiftKey && keyUpEvent.keyCodeString === "P") { + unparentSelectedEntities(); + } else if (!isOnMacPlatform && + ((keyUpEvent.controlKey && keyUpEvent.shiftKey && keyUpEvent.keyCodeString === "Z") || + (keyUpEvent.controlKey && keyUpEvent.keyCodeString === "Y"))) { + undoHistory.redo(); // redo is only handled via handleMenuItem on Mac + } else if (WANT_DEBUG_MISSING_SHORTCUTS) { + console.warn("unhandled key event: " + JSON.stringify(keyUpEvent)) + } +}; + +var propertyMenu = new PopupMenu(); + +propertyMenu.onSelectMenuItem = function (name) { + + if (propertyMenu.marketplaceID) { + showMarketplace(propertyMenu.marketplaceID); + } +}; + +var showMenuItem = propertyMenu.addMenuItem("Show in Marketplace"); + +var propertiesTool = new PropertiesTool(); + +selectionDisplay.onSpaceModeChange = function(spaceMode) { + entityListTool.setSpaceMode(spaceMode); + propertiesTool.setSpaceMode(spaceMode); +}; + +function getExistingZoneList() { + var center = {"x": 0, "y": 0, "z": 0}; + var existingZoneIDs = Entities.findEntitiesByType("Zone", center, 17000); + var listExistingZones = []; + var thisZone = {}; + var properties; + for (var k = 0; k < existingZoneIDs.length; k++) { + properties = Entities.getEntityProperties(existingZoneIDs[k], ["name"]); + thisZone = { + "id": existingZoneIDs[k], + "name": properties.name + }; + listExistingZones.push(thisZone); + } + return listExistingZones; +} + +}()); // END LOCAL_SCOPE From 4a3405484c7da69fb213e4ad977ff4ce95cb4791 Mon Sep 17 00:00:00 2001 From: Alezia Kurdis <60075796+AleziaKurdis@users.noreply.github.com> Date: Fri, 3 Apr 2020 23:43:36 -0400 Subject: [PATCH 019/160] Add new property "renderWithZones" Add the new property "renderWithZones" to the Create App. For this, a new type of renderer type has been added: "Multiple Zones Selector". (Required for the PR#78) --- .../html/js/entityProperties.js | 305 ++++++++++++++++-- 1 file changed, 285 insertions(+), 20 deletions(-) diff --git a/scripts/system/create/entityProperties/html/js/entityProperties.js b/scripts/system/create/entityProperties/html/js/entityProperties.js index 9e476d80aa..8d5594be3b 100644 --- a/scripts/system/create/entityProperties/html/js/entityProperties.js +++ b/scripts/system/create/entityProperties/html/js/entityProperties.js @@ -1,15 +1,8 @@ -//VERSION 2.0 -// Modified by Alezia Kurdis on on 02/27/2020 -// for "Project Athena" -// -// Addition of a tab mechanism instead of collapsible sections to reduce the scrolling. -// -//VERSION 1.0 // entityProperties.js // // Created by Ryan Huffman on 13 Nov 2014 -// Modified by David Back on 19 Oct 2018 // Copyright 2014 High Fidelity, Inc. +// Copyright 2020 Vircadia contributors. // // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html @@ -122,6 +115,11 @@ const GROUPS = [ lines: "Wireframe", }, propertyID: "primitiveMode", + }, + { + label: "Render With Zones", + type: "multipleZonesSelection", + propertyID: "renderWithZones", } ] }, @@ -142,7 +140,17 @@ const GROUPS = [ label: "Color", type: "color", propertyID: "color", - } + }, + { + label: "Alpha", + type: "number-draggable", + min: 0, + max: 1, + step: 0.01, + decimals: 2, + propertyID: "shapeAlpha", + propertyName: "alpha", + }, ] }, { @@ -191,6 +199,36 @@ const GROUPS = [ unit: "m", propertyID: "lineHeight", }, + { + label: "Font", + type: "string", + propertyID: "font", + }, + { + label: "Effect", + type: "dropdown", + options: { + none: "None", + outline: "Outline", + "outline fill": "Outline with fill", + shadow: "Shadow" + }, + propertyID: "textEffect", + }, + { + label: "Effect Color", + type: "color", + propertyID: "textEffectColor", + }, + { + label: "Effect Thickness", + type: "number-draggable", + min: 0.0, + max: 0.5, + step: 0.01, + decimals: 2, + propertyID: "textEffectThickness", + }, { label: "Billboard Mode", type: "dropdown", @@ -288,7 +326,7 @@ const GROUPS = [ { label: "Light Intensity", type: "number-draggable", - min: 0, + min: -40, max: 40, step: 0.01, decimals: 2, @@ -380,7 +418,7 @@ const GROUPS = [ { label: "Ambient Intensity", type: "number-draggable", - min: 0, + min: -200, max: 200, step: 0.1, decimals: 2, @@ -587,7 +625,7 @@ const GROUPS = [ propertyID: "animation.loop", }, { - label: "Allow Transition", + label: "Allow Translation", type: "bool", propertyID: "animation.allowTranslation", }, @@ -651,6 +689,16 @@ const GROUPS = [ propertyID: "imageColor", propertyName: "color", // actual entity property name }, + { + label: "Alpha", + type: "number-draggable", + min: 0, + max: 1, + step: 0.01, + decimals: 2, + propertyID: "imageAlpha", + propertyName: "alpha", + }, { label: "Emissive", type: "bool", @@ -715,6 +763,27 @@ const GROUPS = [ decimals: 0, propertyID: "maxFPS", }, + { + label: "Billboard Mode", + type: "dropdown", + options: { none: "None", yaw: "Yaw", full: "Full"}, + propertyID: "webBillboardMode", + propertyName: "billboardMode", // actual entity property name + }, + { + label: "Input Mode", + type: "dropdown", + options: { + touch: "Touch events", + mouse: "Mouse events" + }, + propertyID: "inputMode", + }, + { + label: "Focus Highlight", + type: "bool", + propertyID: "showKeyboardFocusHighlight", + }, { label: "Script URL", type: "string", @@ -736,7 +805,7 @@ const GROUPS = [ { label: "Intensity", type: "number-draggable", - min: 0, + min: -1000, max: 10000, step: 0.1, decimals: 2, @@ -1601,11 +1670,10 @@ const GROUPS_PER_TYPE = { Image: [ 'base', 'image', 'spatial', 'behavior', 'scripts', 'collision', 'physics' ], Web: [ 'base', 'web', 'spatial', 'behavior', 'scripts', 'collision', 'physics' ], Light: [ 'base', 'light', 'spatial', 'behavior', 'scripts', 'collision', 'physics' ], - Material: [ 'base', 'material', 'spatial', 'behavior', 'scripts' ], + Material: [ 'base', 'material', 'spatial', 'behavior', 'scripts', 'physics' ], ParticleEffect: [ 'base', 'particles', 'particles_emit', 'particles_size', 'particles_color', 'particles_behavior', 'particles_constraints', 'spatial', 'behavior', 'scripts', 'physics' ], PolyLine: [ 'base', 'spatial', 'behavior', 'scripts', 'collision', 'physics' ], - PolyLine: [ 'base', 'spatial', 'behavior', 'scripts', 'collision', 'physics' ], PolyVox: [ 'base', 'spatial', 'behavior', 'scripts', 'collision', 'physics' ], Grid: [ 'base', 'grid', 'spatial', 'behavior', 'scripts', 'physics' ], Multiple: [ 'base', 'spatial', 'behavior', 'scripts', 'collision', 'physics' ], @@ -1675,7 +1743,7 @@ let selectedEntityIDs = new Set(); let currentSelections = []; let createAppTooltip = new CreateAppTooltip(); let currentSpaceMode = PROPERTY_SPACE_MODE.LOCAL; - +let zonesList = []; function createElementFromHTML(htmlString) { let elTemplate = document.createElement('template'); @@ -1701,6 +1769,8 @@ function getPropertyInputElement(propertyID) { case 'textarea': case 'texture': return property.elInput; + case 'multipleZonesSelection': + return property.elInput; case 'number-draggable': return property.elNumber.elInput; case 'rect': @@ -1741,6 +1811,7 @@ function disableChildren(el, selector) { function enableProperties() { enableChildren(document.getElementById("properties-list"), ENABLE_DISABLE_SELECTOR); enableChildren(document, ".colpick"); + enableAllMultipleZoneSelector(); } function disableProperties() { @@ -1749,6 +1820,7 @@ function disableProperties() { for (let pickKey in colorPickers) { colorPickers[pickKey].colpickHide(); } + disableAllMultipleZoneSelector(); } function showPropertyElement(propertyID, show) { @@ -1823,6 +1895,12 @@ function resetProperties() { setTextareaScrolling(property.elInput); break; } + case 'multipleZonesSelection': { + property.elInput.classList.remove('multi-diff'); + property.elInput.value = "[]"; + setZonesSelectionData(property.elInput, false); + break; + } case 'icon': { property.elSpan.style.display = "none"; break; @@ -1860,7 +1938,7 @@ function resetServerScriptStatus() { function showGroupsForType(type) { if (type === "Box" || type === "Sphere") { showGroupsForTypes(["Shape"]); - showOnTheSamePage("Shape"); + showOnTheSamePage(["Shape"]); return; } if (type === "None") { @@ -1868,7 +1946,7 @@ function showGroupsForType(type) { return; } showGroupsForTypes([type]); - showOnTheSamePage(type); + showOnTheSamePage([type]); } function getGroupsForTypes(types) { @@ -2972,6 +3050,10 @@ function createProperty(propertyData, propertyElementID, propertyName, propertyI property.elInput = createTextareaProperty(property, elProperty); break; } + case 'multipleZonesSelection': { + property.elInput = createZonesSelection(property, elProperty); + break; + } case 'icon': { property.elSpan = createIconProperty(property, elProperty); break; @@ -3464,6 +3546,175 @@ function setTextareaScrolling(element) { element.setAttribute("scrolling", isScrolling ? "true" : "false"); } +/** + * ZONE SELECTOR FUNCTIONS + */ + +function enableAllMultipleZoneSelector() { + let allMultiZoneSelectors = document.querySelectorAll(".hiddenMultiZonesSelection"); + let i, propId; + for ( i = 0; i < allMultiZoneSelectors.length; i++ ) { + propId = allMultiZoneSelectors[i].id; + displaySelectedZones(propId, true); + } +} + +function disableAllMultipleZoneSelector() { + let allMultiZoneSelectors = document.querySelectorAll(".hiddenMultiZonesSelection"); + let i, propId; + for ( i = 0; i < allMultiZoneSelectors.length; i++ ) { + propId = allMultiZoneSelectors[i].id; + displaySelectedZones(propId, false); + } +} + +function requestZoneList() { + EventBridge.emitWebEvent(JSON.stringify({ + type: "zoneListRequest" + })); +} + +function addZoneToZonesSelection(propertyId) { + let hiddenField = document.getElementById(propertyId); + if(JSON.stringify(hiddenField.value) === '"undefined"') { + hiddenField.value = "[]"; + } + let selectedZones = JSON.parse(hiddenField.value); + let zoneToAdd = document.getElementById("zones-select-" + propertyId).value; + if (!selectedZones.includes(zoneToAdd)) { + selectedZones.push(zoneToAdd); + } + hiddenField.value = JSON.stringify(selectedZones); + displaySelectedZones(propertyId, true); + let propertyName = propertyId.replace("property-", ""); + updateProperty(propertyName, selectedZones, false); +} + +function removeZoneFromZonesSelection(propertyId, zoneId) { + let hiddenField = document.getElementById(propertyId); + if(JSON.stringify(hiddenField.value) === '"undefined"') { + hiddenField.value = "[]"; + } + let selectedZones = JSON.parse(hiddenField.value); + let index = selectedZones.indexOf(zoneId); + if (index > -1) { + selectedZones.splice(index, 1); + } + hiddenField.value = JSON.stringify(selectedZones); + displaySelectedZones(propertyId, true); + let propertyName = propertyId.replace("property-", ""); + updateProperty(propertyName, selectedZones, false); +} + +function displaySelectedZones(propertyId, isEditable) { + let i,j, name, listedZoneInner, hiddenData, isMultiple; + hiddenData = document.getElementById(propertyId).value; + if (JSON.stringify(hiddenData) === '"undefined"') { + isMultiple = true; + hiddenData = "[]"; + } else { + isMultiple = false; + } + let selectedZones = JSON.parse(hiddenData); + listedZoneInner = ""; + if (selectedZones.length === 0) { + if (!isMultiple) { + listedZoneInner += ""; + } else { + listedZoneInner += ""; + } + } else { + for ( i = 0; i < selectedZones.length; i++ ) { + name = "{ERROR: NOT FOUND}"; + for ( j = 0; j < zonesList.length; j++ ) { + if (selectedZones[i] === zonesList[j].id) { + if (zonesList[j].name !== "") { + name = zonesList[j].name; + } else { + name = zonesList[j].id; + } + break; + } + } + if (isEditable) { + listedZoneInner += ""; + } else { + listedZoneInner += ""; + } + } + } + listedZoneInner += "
  
[ WARNING: Any changes will apply to all ] 
" + name + ""; + listedZoneInner += "
" + name + " 
"; + document.getElementById("selected-zones-" + propertyId).innerHTML = listedZoneInner; + if (isEditable) { + document.getElementById("multiZoneSelTools-" + propertyId).style.display = "block"; + } else { + document.getElementById("multiZoneSelTools-" + propertyId).style.display = "none"; + } +} + +function createZonesSelection(property, elProperty) { + let elementID = property.elementID; + requestZoneList(); + elProperty.className = "multipleZonesSelection"; + let elInput = document.createElement('input'); + elInput.setAttribute("id", elementID); + elInput.setAttribute("type", "hidden"); + elInput.className = "hiddenMultiZonesSelection"; + + let elZonesSelector = document.createElement('div'); + elZonesSelector.setAttribute("id", "zones-selector-" + elementID); + + let elMultiDiff = document.createElement('span'); + elMultiDiff.className = "multi-diff"; + + elProperty.appendChild(elInput); + elProperty.appendChild(elZonesSelector); + elProperty.appendChild(elMultiDiff); + + return elInput; +} + +function setZonesSelectionData(element, isEditable) { + let zoneSelectorContainer = document.getElementById("zones-selector-" + element.id); + let zoneSelector = "
 "; + zoneSelector += "
"; + zoneSelector += "
"; + zoneSelectorContainer.innerHTML = zoneSelector; + displaySelectedZones(element.id, isEditable); +} + +function updateAllZoneSelect() { + let allZoneSelects = document.querySelectorAll(".zoneSelect"); + let i, j, name, propId; + for ( i = 0; i < allZoneSelects.length; i++ ) { + allZoneSelects[i].options.length = 0; + for ( j = 0; j < zonesList.length; j++ ) { + if (zonesList[j].name === "") { + name = zonesList[j].id; + } else { + name = zonesList[j].name; + } + allZoneSelects[i].options[j] = new Option(name, zonesList[j].id, false , false); + } + propId = allZoneSelects[i].id.replace("zones-select-", ""); + if (document.getElementById("multiZoneSelTools-" + propId).style.display === "block") { + displaySelectedZones(propId, true); + } else { + displaySelectedZones(propId, false); + } + } +} /** * MATERIAL TARGET FUNCTIONS @@ -3637,7 +3888,9 @@ function handleEntitySelectionUpdate(selections, isPropertiesToolUpdate) { selectedEntityIDs = new Set(selections.map(selection => selection.id)); const multipleSelections = currentSelections.length > 1; const hasSelectedEntityChanged = !areSetsEqual(selectedEntityIDs, previouslySelectedEntityIDs); - + + requestZoneList(); + if (selections.length === 0) { deleteJSONEditor(); deleteJSONMaterialEditor(); @@ -3692,7 +3945,7 @@ function handleEntitySelectionUpdate(selections, isPropertiesToolUpdate) { } else { enableProperties(); disableSaveUserDataButton(); - disableSaveMaterialDataButton() + disableSaveMaterialDataButton(); } const certificateIDMultiValue = getMultiplePropertyValue('certificateID'); @@ -3848,6 +4101,15 @@ function handleEntitySelectionUpdate(selections, isPropertiesToolUpdate) { setTextareaScrolling(property.elInput); break; } + case 'multipleZonesSelection': { + property.elInput.value = JSON.stringify(propertyValue); + if (lockedMultiValue.isMultiDiffValue || lockedMultiValue.value) { + setZonesSelectionData(property.elInput, false); + } else { + setZonesSelectionData(property.elInput, true); + } + break; + } case 'icon': { property.elSpan.innerHTML = propertyData.icons[propertyValue]; property.elSpan.style.display = "inline-block"; @@ -4177,6 +4439,9 @@ function loaded() { if (data.entityID === getFirstSelectedID()) { setMaterialTargetData(data.materialTargetData); } + } else if (data.type === 'zoneListRequest') { + zonesList = data.zones; + updateAllZoneSelect(); } }); From cdef49d633a271cccacd18b33cd1900bcf0edd4a Mon Sep 17 00:00:00 2001 From: Alezia Kurdis <60075796+AleziaKurdis@users.noreply.github.com> Date: Sat, 4 Apr 2020 22:18:59 -0400 Subject: [PATCH 020/160] Fix tooltip text for particles alpha properties Fix the tooltip's text for particle alpha properties. --- scripts/system/create/assets/data/createAppTooltips.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/scripts/system/create/assets/data/createAppTooltips.json b/scripts/system/create/assets/data/createAppTooltips.json index d473dc5a8e..860558bbfe 100644 --- a/scripts/system/create/assets/data/createAppTooltips.json +++ b/scripts/system/create/assets/data/createAppTooltips.json @@ -319,17 +319,17 @@ "tooltip": "The spread in color that each particle is given, resulting in a variety of colors." }, "particleAlphaTriple": { - "tooltip": "Set the opacity of the each particle between 0.0 fully transparent and 1.0 completely opaque.", + "tooltip": "Set the opacity of each particle between 0.0 fully transparent and 1.0 completely opaque.", "jsPropertyName": "alpha" }, "alpha": { - "tooltip": "Set the opacity of the each particle between 0.0 fully transparent and 1.0 completely opaque." + "tooltip": "Set the opacity of each particle between 0.0 fully transparent and 1.0 completely opaque." }, "alphaStart": { - "tooltip": "Set the initial opacity level of the each particle between 0.0 fully transparent and 1.0 completely opaque." + "tooltip": "Set the initial opacity level of each particle between 0.0 fully transparent and 1.0 completely opaque." }, "alphaFinish": { - "tooltip": "Set the final opacity level of the each particle between 0.0 fully transparent and 1.0 completely opaque." + "tooltip": "Set the final opacity level of each particle between 0.0 fully transparent and 1.0 completely opaque." }, "alphaSpread": { "tooltip": "The spread in opacity that each particle is given, resulting in a variety of opacity levels." From 6d33713e35b4f93f14ea93947dcc8d775389275f Mon Sep 17 00:00:00 2001 From: Alezia Kurdis <60075796+AleziaKurdis@users.noreply.github.com> Date: Sun, 5 Apr 2020 02:14:10 -0400 Subject: [PATCH 021/160] Better tooltip for renderWithZones property Better tooltip for renderWithZones property --- scripts/system/create/assets/data/createAppTooltips.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/system/create/assets/data/createAppTooltips.json b/scripts/system/create/assets/data/createAppTooltips.json index 860558bbfe..94d8fe1ab6 100644 --- a/scripts/system/create/assets/data/createAppTooltips.json +++ b/scripts/system/create/assets/data/createAppTooltips.json @@ -596,7 +596,7 @@ "tooltip": "The mode in which to draw an entity, either \"Solid\" or \"Wireframe\"." }, "renderWithZones": { - "tooltip": "This entity will be rendered only from the specified zones. If not specified, the entity will be always rendered." + "tooltip": "If set, this entity will only render when your avatar is inside of a zone in this list." }, "groupCulled": { "tooltip": "If false, individual pieces of the entity may be culled by the render engine. If true, either the entire entity will be culled, or it won't at all." From 9c5f8fc9461219406486b19c1bf570733d07956c Mon Sep 17 00:00:00 2001 From: Alezia Kurdis <60075796+AleziaKurdis@users.noreply.github.com> Date: Sun, 5 Apr 2020 02:18:51 -0400 Subject: [PATCH 022/160] Typo missing dot. --- .../system/create/entityProperties/html/js/entityProperties.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/system/create/entityProperties/html/js/entityProperties.js b/scripts/system/create/entityProperties/html/js/entityProperties.js index 8d5594be3b..78ebe5b5cb 100644 --- a/scripts/system/create/entityProperties/html/js/entityProperties.js +++ b/scripts/system/create/entityProperties/html/js/entityProperties.js @@ -3621,7 +3621,7 @@ function displaySelectedZones(propertyId, isEditable) { if (!isMultiple) { listedZoneInner += "  "; } else { - listedZoneInner += "[ WARNING: Any changes will apply to all ] "; + listedZoneInner += "[ WARNING: Any changes will apply to all. ] "; } } else { for ( i = 0; i < selectedZones.length; i++ ) { From 115c40bd549efad4c7cd3d6f3c8d0f2ba99e9bd0 Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Tue, 7 Apr 2020 04:56:02 -0400 Subject: [PATCH 023/160] Lots of renamings, more to come. --- BUILD.md | 2 +- BUILD_LINUX_CHEATSHEET.md | 3 +++ BUILD_OSX.md | 2 +- BUILD_WIN.md | 18 +++++++++--------- LICENSE | 2 +- README_hifi.md | 2 +- .../interface/src/main/res/values/strings.xml | 4 ++-- assignment-client/src/AssignmentClientApp.cpp | 2 +- cmake/ports/hifi-client-deps/CONTROL | 2 +- domain-server/resources/web/wizard/index.shtml | 2 +- domain-server/src/DomainServer.cpp | 2 +- .../html/commerce/backup_instructions.html | 2 +- interface/resources/html/tabletHelp.html | 8 ++++---- .../qml/+webengine/BrowserWebView.qml | 2 +- .../qml/LoginDialog/LinkAccountBody.qml | 4 ++-- .../resources/qml/LoginDialog/SignUpBody.qml | 2 +- .../qml/LoginDialog/UsernameCollisionBody.qml | 2 +- .../hifi/avatarPackager/AvatarPackagerApp.qml | 2 +- .../qml/hifi/avatarPackager/AvatarProject.qml | 2 +- .../qml/hifi/avatarapp/MessageBoxes.qml | 2 +- .../qml/hifi/commerce/checkout/Checkout.qml | 2 +- .../qml/hifi/commerce/purchases/Purchases.qml | 2 +- .../qml/hifi/commerce/wallet/Help.qml | 2 +- .../qml/hifi/dialogs/TabletAboutDialog.qml | 2 +- interface/src/Application.cpp | 2 +- interface/src/Menu.cpp | 6 +++--- interface/src/avatar/AvatarDoctor.cpp | 2 +- interface/src/avatar/MyAvatar.h | 14 +++++++------- interface/src/main.cpp | 2 +- launchers/qt/src/main.cpp | 2 +- .../src/avatars-renderer/Avatar.h | 4 ++-- libraries/avatars/src/AvatarData.h | 18 +++++++++--------- .../entities/src/EntityItemProperties.cpp | 8 ++++---- libraries/image/src/image/TextureProcessing.h | 2 +- libraries/midi/src/Midi.h | 2 +- libraries/networking/src/NetworkingConstants.h | 2 +- .../plugins/src/plugins/SteamClientPlugin.h | 2 +- libraries/script-engine/src/Quat.h | 8 ++++---- libraries/script-engine/src/ScriptEngine.h | 6 +++--- libraries/script-engine/src/Vec3.h | 4 ++-- libraries/shared/src/SharedUtil.cpp | 2 +- libraries/shared/src/Trace.cpp | 2 +- libraries/ui/src/ui/TabletScriptingInterface.h | 4 ++-- pkg-scripts/athena-server.spec | 8 ++++---- script-archive/afk.js | 2 +- .../tests/performance/renderableMatrix.js | 2 +- .../fireworksLaunchButtonEntityScript.js | 2 +- .../chapter1/fireworksLaunchButtonSpawner.js | 2 +- .../fireworksLaunchButtonEntityScript.js | 2 +- .../chapter2/fireworksLaunchButtonSpawner.js | 2 +- .../fireworksLaunchButtonEntityScript.js | 2 +- .../chapter3/fireworksLaunchButtonSpawner.js | 2 +- scripts/system/create/edit.js | 2 +- server-console/package.json | 2 +- tools/ac-client/src/ACClientApp.cpp | 2 +- tools/atp-client/src/ATPClientApp.cpp | 2 +- .../package-and-upload.sh | 10 +++++----- tools/ice-client/src/ICEClientApp.cpp | 2 +- tools/nitpick/CMakeLists.txt | 2 +- tools/oven/src/OvenCLIApplication.cpp | 2 +- tools/oven/src/ui/OvenMainWindow.cpp | 2 +- tools/oven/src/ui/ResultsWindow.cpp | 2 +- tools/skeleton-dump/src/SkeletonDumpApp.cpp | 2 +- tools/udt-test/src/UDTTest.cpp | 2 +- tools/vhacd-util/src/VHACDUtilApp.cpp | 2 +- 65 files changed, 114 insertions(+), 111 deletions(-) diff --git a/BUILD.md b/BUILD.md index 87b9c14c7b..f441290c85 100644 --- a/BUILD.md +++ b/BUILD.md @@ -89,7 +89,7 @@ In the examples below the variable $NAME would be replaced by the name of the de * $NAME_ROOT_DIR - pass this variable to Cmake with the -DNAME_ROOT_DIR= flag when running Cmake to generate build files * $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' +* HIFI_LIB_DIR - set this variable in your ENV to your Vircadia lib folder, should contain a folder '$name' ### Optional Components diff --git a/BUILD_LINUX_CHEATSHEET.md b/BUILD_LINUX_CHEATSHEET.md index 9e7534418a..9297f9fd7d 100644 --- a/BUILD_LINUX_CHEATSHEET.md +++ b/BUILD_LINUX_CHEATSHEET.md @@ -1,4 +1,7 @@ ## This guide is specific to Ubuntu 16.04. + +THIS DOCUMENT IS OUTDATED. + Deb packages of High Fidelity domain server and assignment client are stored on debian.highfidelity.com ``` diff --git a/BUILD_OSX.md b/BUILD_OSX.md index 69cfed7de9..b39aadb287 100644 --- a/BUILD_OSX.md +++ b/BUILD_OSX.md @@ -6,7 +6,7 @@ Please read the [general build guide](BUILD.md) for information on dependencies ### Homebrew -[Homebrew](https://brew.sh/) is an excellent package manager for macOS. It makes install of some High Fidelity dependencies very simple. +[Homebrew](https://brew.sh/) is an excellent package manager for macOS. It makes install of some Vircadia dependencies very simple. brew install cmake openssl diff --git a/BUILD_WIN.md b/BUILD_WIN.md index bdab7e6e6d..098553c761 100644 --- a/BUILD_WIN.md +++ b/BUILD_WIN.md @@ -1,6 +1,6 @@ # Build Windows -*Last Updated on January 13, 2020* +*Last Updated on April 7, 2020* This is a stand-alone guide for creating your first Vircadia build for Windows 64-bit. @@ -68,7 +68,7 @@ To create this variable: ### Step 5. Running CMake to Generate Build Files Run Command Prompt from Start and run the following commands: -`cd "%HIFI_DIR%"` +`cd "%VIRCADIA_DIR%"` `mkdir build` `cd build` @@ -78,11 +78,11 @@ Run `cmake .. -G "Visual Studio 15 Win64"`. #### If you're using Visual Studio 2019, Run `cmake .. -G "Visual Studio 16 2019" -A x64`. -Where `%HIFI_DIR%` is the directory for the highfidelity repository. +Where `%VIRCADIA_DIR%` is the directory for the Vircadia repository. ### Step 6. Making a Build -Open `%HIFI_DIR%\build\athena.sln` using Visual Studio. +Open `%VIRCADIA_DIR%\build\athena.sln` using Visual Studio. Change the Solution Configuration (menu ribbon under the menu bar, next to the green play button) from "Debug" to "Release" for best performance. @@ -98,22 +98,22 @@ Restart Visual Studio again. In Visual Studio, right+click "interface" under the Apps folder in Solution Explorer and select "Set as Startup Project". Run from the menu bar `Debug > Start Debugging`. -Now, you should have a full build of Project Athena 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. +Now, you should have a full build of Vircadia and be able to run the Interface using Visual Studio. -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 `%VIRCADIA_DIR%\build\interface\Release\interface.exe` ## Troubleshooting For any problems after Step #6, first try this: -* Delete your locally cloned copy of the highfidelity repository +* Delete your locally cloned copy of the Vircadia repository * Restart your computer * Redownload the [repository](https://github.com/kasenvr/project-athena) * Restart directions from Step #6 #### 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 `%VIRCADIA_DIR%\build` directory. #### CMake can't find OpenSSL -Remove `CMakeCache.txt` found in the `%HIFI_DIR%\build` directory. Verify that your HIFI_VCPKG_BASE environment variable is set and pointing to the correct location. Verify that the file `${HIFI_VCPKG_BASE}/installed/x64-windows/include/openssl/ssl.h` exists. +Remove `CMakeCache.txt` found in the `%VIRCADIA_DIR%\build` directory. Verify that your HIFI_VCPKG_BASE environment variable is set and pointing to the correct location. Verify that the file `${HIFI_VCPKG_BASE}/installed/x64-windows/include/openssl/ssl.h` exists. diff --git a/LICENSE b/LICENSE index f88e751de5..ab1ea16d6a 100644 --- a/LICENSE +++ b/LICENSE @@ -1,7 +1,7 @@ Copyright (c) 2013-2019, High Fidelity, Inc. Copyright (c) 2019-2020, Project Athena Contributors. All rights reserved. -https://projectathena.io +https://vircadia.com Licensed under the Apache License version 2.0 (the "License"); You may not use this software except in compliance with the License. diff --git a/README_hifi.md b/README_hifi.md index 46433a155c..8d02300455 100644 --- a/README_hifi.md +++ b/README_hifi.md @@ -15,7 +15,7 @@ Come chat with us in [our Gitter](https://gitter.im/highfidelity/hifi) if you ha Documentation ========= -Documentation is available at [docs.highfidelity.com](https://docs.highfidelity.com), if something is missing, please suggest it via a new job on Worklist (add to the hifi-docs project). +Documentation is available at [docs.vircadia.dev](https://docs.vircadia.dev), if something is missing, please suggest it via a new job on Worklist (add to the hifi-docs project). There is also detailed [documentation on our coding standards](CODING_STANDARD.md). diff --git a/android/apps/interface/src/main/res/values/strings.xml b/android/apps/interface/src/main/res/values/strings.xml index b60caf1f2c..c1d7303f36 100644 --- a/android/apps/interface/src/main/res/values/strings.xml +++ b/android/apps/interface/src/main/res/values/strings.xml @@ -27,9 +27,9 @@ Online Sign Up SIGN UP - Creating your High Fidelity account + Creating your Vircadia account Email, username or password incorrect. - You are now signed into High Fidelity + You are now signed into Vircadia You are now logged in! Welcome Cancel diff --git a/assignment-client/src/AssignmentClientApp.cpp b/assignment-client/src/AssignmentClientApp.cpp index c5b228bd16..6915f15629 100644 --- a/assignment-client/src/AssignmentClientApp.cpp +++ b/assignment-client/src/AssignmentClientApp.cpp @@ -44,7 +44,7 @@ AssignmentClientApp::AssignmentClientApp(int argc, char* argv[]) : // parse command-line QCommandLineParser parser; - parser.setApplicationDescription("High Fidelity Assignment Client"); + parser.setApplicationDescription("Vircadia Assignment Client"); const QCommandLineOption helpOption = parser.addHelpOption(); const QCommandLineOption versionOption = parser.addVersionOption(); diff --git a/cmake/ports/hifi-client-deps/CONTROL b/cmake/ports/hifi-client-deps/CONTROL index 7d4727b364..7b94d1ce56 100644 --- a/cmake/ports/hifi-client-deps/CONTROL +++ b/cmake/ports/hifi-client-deps/CONTROL @@ -1,4 +1,4 @@ Source: hifi-client-deps Version: 0 -Description: Collected dependencies for High Fidelity applications +Description: Collected dependencies for Vircadia applications Build-Depends: hifi-deps, glslang, nlohmann-json, openvr (windows), sdl2 (!android), spirv-cross (!android), spirv-tools (!android), vulkanmemoryallocator diff --git a/domain-server/resources/web/wizard/index.shtml b/domain-server/resources/web/wizard/index.shtml index 3bc7503b44..37f9d9e813 100644 --- a/domain-server/resources/web/wizard/index.shtml +++ b/domain-server/resources/web/wizard/index.shtml @@ -24,7 +24,7 @@
- Place names are similar to web addresses. Users who want to visit your domain can + Place names are similar to web addresses. Users who want to visit your domain can enter its Place Name in High Fidelity's Interface. You can choose a Place Name for your domain.
Your domain may also be reachable by IP address.
diff --git a/domain-server/src/DomainServer.cpp b/domain-server/src/DomainServer.cpp index a9bc24c483..eff129095c 100644 --- a/domain-server/src/DomainServer.cpp +++ b/domain-server/src/DomainServer.cpp @@ -334,7 +334,7 @@ DomainServer::DomainServer(int argc, char* argv[]) : void DomainServer::parseCommandLine(int argc, char* argv[]) { QCommandLineParser parser; - parser.setApplicationDescription("High Fidelity Domain Server"); + parser.setApplicationDescription("Vircadia Domain Server"); const QCommandLineOption versionOption = parser.addVersionOption(); const QCommandLineOption helpOption = parser.addHelpOption(); diff --git a/interface/resources/html/commerce/backup_instructions.html b/interface/resources/html/commerce/backup_instructions.html index 4056b81896..034844e705 100644 --- a/interface/resources/html/commerce/backup_instructions.html +++ b/interface/resources/html/commerce/backup_instructions.html @@ -596,7 +596,7 @@

Want to learn more?

You can find out much more about the blockchain and about commerce in High Fidelity by visiting our Docs site:

-

Visit High Fidelity's Docs

+

Visit High Fidelity's Docs


diff --git a/interface/resources/html/tabletHelp.html b/interface/resources/html/tabletHelp.html index a414417239..f84ea7fba8 100644 --- a/interface/resources/html/tabletHelp.html +++ b/interface/resources/html/tabletHelp.html @@ -77,9 +77,9 @@ var handControllerImageURL = null; var index = 0; var count = 3; - var handControllerRefURL = "https://docs.projectathena.dev/explore/get-started/vr-controls.html#vr-controls"; - var keyboardRefURL = "https://docs.projectathena.dev/explore/get-started/desktop.html#movement-controls"; - var gamepadRefURL = "https://docs.projectathena.dev/explore/get-started/vr-controls.html#gamepad"; + var handControllerRefURL = "https://docs.vircadia.dev/explore/get-started/vr-controls.html#vr-controls"; + var keyboardRefURL = "https://docs.vircadia.dev/explore/get-started/desktop.html#movement-controls"; + var gamepadRefURL = "https://docs.vircadia.dev/explore/get-started/vr-controls.html#gamepad"; function showKbm() { document.getElementById("main_image").setAttribute("src", "img/tablet-help-keyboard.jpg"); @@ -189,7 +189,7 @@
- Report Problem + Report Problem diff --git a/interface/resources/qml/+webengine/BrowserWebView.qml b/interface/resources/qml/+webengine/BrowserWebView.qml index 7f2136ec4f..fcf4b39a2e 100644 --- a/interface/resources/qml/+webengine/BrowserWebView.qml +++ b/interface/resources/qml/+webengine/BrowserWebView.qml @@ -6,7 +6,7 @@ import controlsUit 1.0 WebView { id: webview - url: "https://projectathena.io/" + url: "https://vircadia.com/" profile: FileTypeProfile; property var parentRoot: null diff --git a/interface/resources/qml/LoginDialog/LinkAccountBody.qml b/interface/resources/qml/LoginDialog/LinkAccountBody.qml index 6de8676fd0..c3e4950868 100644 --- a/interface/resources/qml/LoginDialog/LinkAccountBody.qml +++ b/interface/resources/qml/LoginDialog/LinkAccountBody.qml @@ -356,7 +356,7 @@ Item { font.pixelSize: linkAccountBody.textFieldFontSize font.bold: linkAccountBody.fontBold - text: " Can't access your account?" + text: " Can't access your account?" verticalAlignment: Text.AlignVCenter horizontalAlignment: Text.AlignHCenter @@ -480,7 +480,7 @@ Item { leftMargin: hifi.dimensions.contentSpacing.x } - text: "Sign Up" + text: "Sign Up" linkColor: hifi.colors.blueAccent onLinkActivated: { diff --git a/interface/resources/qml/LoginDialog/SignUpBody.qml b/interface/resources/qml/LoginDialog/SignUpBody.qml index 7347464f4e..5a08fb76f9 100644 --- a/interface/resources/qml/LoginDialog/SignUpBody.qml +++ b/interface/resources/qml/LoginDialog/SignUpBody.qml @@ -395,7 +395,7 @@ Item { text: signUpBody.termsContainerText Component.onCompleted: { // with the link. - termsText.text = qsTr("By signing up, you agree to Project Athena's Terms of Service") + termsText.text = qsTr("By signing up, you agree to Vircadia's Terms of Service") } } diff --git a/interface/resources/qml/LoginDialog/UsernameCollisionBody.qml b/interface/resources/qml/LoginDialog/UsernameCollisionBody.qml index 8b3c878d46..eb9b7ffe37 100644 --- a/interface/resources/qml/LoginDialog/UsernameCollisionBody.qml +++ b/interface/resources/qml/LoginDialog/UsernameCollisionBody.qml @@ -218,7 +218,7 @@ Item { text: usernameCollisionBody.termsContainerText Component.onCompleted: { // with the link. - termsText.text = qsTr("By creating this user profile, you agree to Project Athena's Terms of Service") + termsText.text = qsTr("By creating this user profile, you agree to Vircadia's Terms of Service") } } diff --git a/interface/resources/qml/hifi/avatarPackager/AvatarPackagerApp.qml b/interface/resources/qml/hifi/avatarPackager/AvatarPackagerApp.qml index 9158e25f75..00d8a29561 100644 --- a/interface/resources/qml/hifi/avatarPackager/AvatarPackagerApp.qml +++ b/interface/resources/qml/hifi/avatarPackager/AvatarPackagerApp.qml @@ -229,7 +229,7 @@ Item { } function openDocs() { - Qt.openUrlExternally("https://docs.projectathena.dev/create/avatars/package-avatar.html"); + Qt.openUrlExternally("https://docs.vircadia.dev/create/avatars/package-avatar.html"); } function openVideo() { diff --git a/interface/resources/qml/hifi/avatarPackager/AvatarProject.qml b/interface/resources/qml/hifi/avatarPackager/AvatarProject.qml index a0c98b0821..9b59303a7e 100644 --- a/interface/resources/qml/hifi/avatarPackager/AvatarProject.qml +++ b/interface/resources/qml/hifi/avatarPackager/AvatarProject.qml @@ -318,7 +318,7 @@ Item { text: "This item is not for sale yet, learn more." onLinkActivated: { - Qt.openUrlExternally("https://docs.projectathena.dev/sell/add-item/upload-avatar.html"); + Qt.openUrlExternally("https://docs.vircadia.dev/sell/add-item/upload-avatar.html"); } } diff --git a/interface/resources/qml/hifi/avatarapp/MessageBoxes.qml b/interface/resources/qml/hifi/avatarapp/MessageBoxes.qml index 691fbedac3..e8db561a0f 100644 --- a/interface/resources/qml/hifi/avatarapp/MessageBoxes.qml +++ b/interface/resources/qml/hifi/avatarapp/MessageBoxes.qml @@ -7,7 +7,7 @@ MessageBox { popup.onButton2Clicked = callback; popup.titleText = 'Specify Avatar URL' popup.bodyText = 'This will not overwrite your existing favorite if you are wearing one.
' + - '' + + '' + 'Learn to make a custom avatar by opening this link on your desktop.' + '' popup.inputText.visible = true; diff --git a/interface/resources/qml/hifi/commerce/checkout/Checkout.qml b/interface/resources/qml/hifi/commerce/checkout/Checkout.qml index b1b367f2b2..424b4d616d 100644 --- a/interface/resources/qml/hifi/commerce/checkout/Checkout.qml +++ b/interface/resources/qml/hifi/commerce/checkout/Checkout.qml @@ -778,7 +778,7 @@ Rectangle { lightboxPopup.bodyText = "Rezzing this content set will replace the existing environment and all of the items in this domain. " + "If you want to save the state of the content in this domain, create a backup before proceeding.

" + "For more information about backing up and restoring content, " + - "" + + "" + "click here to open info on your desktop browser."; lightboxPopup.button1text = "CANCEL"; lightboxPopup.button1method = function() { diff --git a/interface/resources/qml/hifi/commerce/purchases/Purchases.qml b/interface/resources/qml/hifi/commerce/purchases/Purchases.qml index 66113985e8..8ccfceb03c 100644 --- a/interface/resources/qml/hifi/commerce/purchases/Purchases.qml +++ b/interface/resources/qml/hifi/commerce/purchases/Purchases.qml @@ -602,7 +602,7 @@ Rectangle { lightboxPopup.bodyText = "Rezzing this content set will replace the existing environment and all of the items in this domain. " + "If you want to save the state of the content in this domain, create a backup before proceeding.

" + "For more information about backing up and restoring content, " + - "
" + + "" + "click here to open info on your desktop browser."; lightboxPopup.button1text = "CANCEL"; lightboxPopup.button1method = function() { diff --git a/interface/resources/qml/hifi/commerce/wallet/Help.qml b/interface/resources/qml/hifi/commerce/wallet/Help.qml index af1e1b5ab9..dbdefc4c79 100644 --- a/interface/resources/qml/hifi/commerce/wallet/Help.qml +++ b/interface/resources/qml/hifi/commerce/wallet/Help.qml @@ -207,7 +207,7 @@ At the moment, there is currently no way to convert HFC to other currencies. Sta if (link === "#privateKeyPath") { Qt.openUrlExternally("file:///" + root.keyFilePath.substring(0, root.keyFilePath.lastIndexOf('/'))); } else if (link === "#blockchain") { - Qt.openUrlExternally("https://docs.projectathena.dev/explore/shop.html"); + Qt.openUrlExternally("https://docs.vircadia.dev/explore/shop.html"); } else if (link === "#bank") { if ((Account.metaverseServerURL).toString().indexOf("staging") >= 0) { Qt.openUrlExternally("hifi://hifiqa-master-metaverse-staging"); // So that we can test in staging. diff --git a/interface/resources/qml/hifi/dialogs/TabletAboutDialog.qml b/interface/resources/qml/hifi/dialogs/TabletAboutDialog.qml index 2be66442ce..0a5358b8a4 100644 --- a/interface/resources/qml/hifi/dialogs/TabletAboutDialog.qml +++ b/interface/resources/qml/hifi/dialogs/TabletAboutDialog.qml @@ -53,7 +53,7 @@ Rectangle { textFormat: Text.StyledText linkColor: "#00B4EF" color: "white" - text: "Project Athena Github." + text: "Vircadia Github." size: 20 onLinkActivated: { HiFiAbout.openUrl("https:/github.com/kasenvr/project-athena"); diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index a73281e569..9b8d9a3fef 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -7727,7 +7727,7 @@ bool Application::askToReplaceDomainContent(const QString& url) { static const QString infoText = simpleWordWrap("Your domain's content will be replaced with a new content set. " "If you want to save what you have now, create a backup before proceeding. For more information about backing up " "and restoring content, visit the documentation page at: ", MAX_CHARACTERS_PER_LINE) + - "\nhttps://docs.projectathena.dev/host/maintain-domain/backup-domain.html"; + "\nhttps://docs.vircadia.dev/host/maintain-domain/backup-domain.html"; ModalDialogListener* dig = OffscreenUi::asyncQuestion("Are you sure you want to replace this domain's content set?", infoText, QMessageBox::Yes | QMessageBox::No, QMessageBox::No); diff --git a/interface/src/Menu.cpp b/interface/src/Menu.cpp index fbb69842bd..5e59922e2a 100644 --- a/interface/src/Menu.cpp +++ b/interface/src/Menu.cpp @@ -779,7 +779,7 @@ Menu::Menu() { // Help > Athena Docs action = addActionToQMenuAndActionHash(helpMenu, "Online Documentation"); connect(action, &QAction::triggered, qApp, [] { - QDesktopServices::openUrl(QUrl("https://docs.projectathena.dev/")); + QDesktopServices::openUrl(QUrl("https://docs.vircadia.dev/")); }); // Help > Athena Forum @@ -791,7 +791,7 @@ Menu::Menu() { // Help > Scripting Reference action = addActionToQMenuAndActionHash(helpMenu, "Online Script Reference"); connect(action, &QAction::triggered, qApp, [] { - QDesktopServices::openUrl(QUrl("https://apidocs.projectathena.dev/")); + QDesktopServices::openUrl(QUrl("https://apidocs.vircadia.dev/")); }); addActionToQMenuAndActionHash(helpMenu, "Controls Reference", 0, qApp, SLOT(showHelp())); @@ -801,7 +801,7 @@ Menu::Menu() { // Help > Release Notes action = addActionToQMenuAndActionHash(helpMenu, "Release Notes"); connect(action, &QAction::triggered, qApp, [] { - QDesktopServices::openUrl(QUrl("https://docs.projectathena.dev/release-notes.html")); + QDesktopServices::openUrl(QUrl("https://docs.vircadia.dev/release-notes.html")); }); // Help > Report a Bug! diff --git a/interface/src/avatar/AvatarDoctor.cpp b/interface/src/avatar/AvatarDoctor.cpp index b0c82f1afc..d84383cf4f 100644 --- a/interface/src/avatar/AvatarDoctor.cpp +++ b/interface/src/avatar/AvatarDoctor.cpp @@ -55,7 +55,7 @@ static QStringList HAND_MAPPING_SUFFIXES = { "HandThumb1", }; -const QUrl PACKAGE_AVATAR_DOCS_BASE_URL = QUrl("https://docs.projectathena.dev/create/avatars/package-avatar.html"); +const QUrl PACKAGE_AVATAR_DOCS_BASE_URL = QUrl("https://docs.vircadia.dev/create/avatars/package-avatar.html"); AvatarDoctor::AvatarDoctor(const QUrl& avatarFSTFileUrl) : _avatarFSTFileUrl(avatarFSTFileUrl) { diff --git a/interface/src/avatar/MyAvatar.h b/interface/src/avatar/MyAvatar.h index 95256500e1..717a562179 100644 --- a/interface/src/avatar/MyAvatar.h +++ b/interface/src/avatar/MyAvatar.h @@ -607,7 +607,7 @@ public: *

Note: When using pre-built animation data, it's critical that the joint orientation of the source animation and target * rig are equivalent, since the animation data applies absolute values onto the joints. If the orientations are different, * the avatar will move in unpredictable ways. For more information about avatar joint orientation standards, see - * Avatar Standards.

+ * Avatar Standards.

* @function MyAvatar.overrideAnimation * @param {string} url - The URL to the animation file. Animation files may be in glTF or FBX format, but only need to * contain the avatar skeleton and animation data. glTF models may be in JSON or binary format (".gltf" or ".glb" URLs @@ -715,7 +715,7 @@ public: *

Note: When using pre-built animation data, it's critical that the joint orientation of the source animation and target * rig are equivalent, since the animation data applies absolute values onto the joints. If the orientations are different, * the avatar will move in unpredictable ways. For more information about avatar joint orientation standards, see - * Avatar Standards. + * Avatar Standards. * @function MyAvatar.overrideRoleAnimation * @param {string} role - The animation role to override * @param {string} url - The URL to the animation file. Animation files need to be in glTF or FBX format, but only need to @@ -1871,7 +1871,7 @@ public: /**jsdoc * Enables and disables flow simulation of physics on the avatar's hair, clothes, and body parts. See - * {@link https://docs.projectathena.dev/create/avatars/add-flow.html|Add Flow to Your Avatar} for more + * {@link https://docs.vircadia.dev/create/avatars/add-flow.html|Add Flow to Your Avatar} for more * information. * @function MyAvatar.useFlow * @param {boolean} isActive - true if flow simulation is enabled on the joint, false if it isn't. @@ -2236,7 +2236,7 @@ public slots: /**jsdoc * Gets the URL of the override animation graph. - *

See {@link https://docs.projectathena.dev/create/avatars/custom-animations.html|Custom Avatar Animations} for + *

See {@link https://docs.vircadia.dev/create/avatars/custom-animations.html|Custom Avatar Animations} for * information on animation graphs.

* @function MyAvatar.getAnimGraphOverrideUrl * @returns {string} The URL of the override animation graph JSON file. "" if there is no override animation @@ -2246,7 +2246,7 @@ public slots: /**jsdoc * Sets the animation graph to use in preference to the default animation graph. - *

See {@link https://docs.projectathena.dev/create/avatars/custom-animations.html|Custom Avatar Animations} for + *

See {@link https://docs.vircadia.dev/create/avatars/custom-animations.html|Custom Avatar Animations} for * information on animation graphs.

* @function MyAvatar.setAnimGraphOverrideUrl * @param {string} url - The URL of the animation graph JSON file to use. Set to "" to clear an override. @@ -2255,7 +2255,7 @@ public slots: /**jsdoc * Gets the URL of animation graph (i.e., the avatar animation JSON) that's currently being used for avatar animations. - *

See {@link https://docs.projectathena.dev/create/avatars/custom-animations.html|Custom Avatar Animations} for + *

See {@link https://docs.vircadia.dev/create/avatars/custom-animations.html|Custom Avatar Animations} for * information on animation graphs.

* @function MyAvatar.getAnimGraphUrl * @returns {string} The URL of the current animation graph JSON file. @@ -2266,7 +2266,7 @@ public slots: /**jsdoc * Sets the current animation graph (i.e., the avatar animation JSON) to use for avatar animations and makes it the default. - *

See {@link https://docs.projectathena.dev/create/avatars/custom-animations.html|Custom Avatar Animations} for + *

See {@link https://docs.vircadia.dev/create/avatars/custom-animations.html|Custom Avatar Animations} for * information on animation graphs.

* @function MyAvatar.setAnimGraphUrl * @param {string} url - The URL of the animation graph JSON file to use. diff --git a/interface/src/main.cpp b/interface/src/main.cpp index 81616e5773..65339dcc02 100644 --- a/interface/src/main.cpp +++ b/interface/src/main.cpp @@ -72,7 +72,7 @@ int main(int argc, const char* argv[]) { } QCommandLineParser parser; - parser.setApplicationDescription("High Fidelity"); + parser.setApplicationDescription("Vircadia"); QCommandLineOption versionOption = parser.addVersionOption(); QCommandLineOption helpOption = parser.addHelpOption(); diff --git a/launchers/qt/src/main.cpp b/launchers/qt/src/main.cpp index 75c35cd708..58aa1ba7ba 100644 --- a/launchers/qt/src/main.cpp +++ b/launchers/qt/src/main.cpp @@ -1,4 +1,4 @@ -#include +"Vircadia#include #include diff --git a/libraries/avatars-renderer/src/avatars-renderer/Avatar.h b/libraries/avatars-renderer/src/avatars-renderer/Avatar.h index 6e5f22f473..c9ecac7d19 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Avatar.h +++ b/libraries/avatars-renderer/src/avatars-renderer/Avatar.h @@ -207,7 +207,7 @@ public: /**jsdoc * Gets the default rotation of a joint (in the current avatar) relative to its parent. *

For information on the joint hierarchy used, see - * Avatar Standards.

+ * Avatar Standards.

* @function MyAvatar.getDefaultJointRotation * @param {number} index - The joint index. * @returns {Quat} The default rotation of the joint if the joint index is valid, otherwise {@link Quat(0)|Quat.IDENTITY}. @@ -218,7 +218,7 @@ public: * Gets the default translation of a joint (in the current avatar) relative to its parent, in model coordinates. *

Warning: These coordinates are not necessarily in meters.

*

For information on the joint hierarchy used, see - * Avatar Standards.

+ * Avatar Standards.

* @function MyAvatar.getDefaultJointTranslation * @param {number} index - The joint index. * @returns {Vec3} The default translation of the joint (in model coordinates) if the joint index is valid, otherwise diff --git a/libraries/avatars/src/AvatarData.h b/libraries/avatars/src/AvatarData.h index cc2dd0b7da..3b6ead1f20 100755 --- a/libraries/avatars/src/AvatarData.h +++ b/libraries/avatars/src/AvatarData.h @@ -793,7 +793,7 @@ public: * @param {Quat} rotation - The rotation of the joint relative to its parent. * @param {Vec3} translation - The translation of the joint relative to its parent, in model coordinates. * @example Set your avatar to it's default T-pose for a while.
- * Avatar in T-pose + * Avatar in T-pose * // Set all joint translations and rotations to defaults. * var i, length, rotation, translation; * for (i = 0, length = MyAvatar.getJointNames().length; i < length; i++) { @@ -857,7 +857,7 @@ public: /**jsdoc * Gets the rotation of a joint relative to its parent. For information on the joint hierarchy used, see - * Avatar Standards. + * Avatar Standards. * @function Avatar.getJointRotation * @param {number} index - The index of the joint. * @returns {Quat} The rotation of the joint relative to its parent. @@ -868,7 +868,7 @@ public: * Gets the translation of a joint relative to its parent, in model coordinates. *

Warning: These coordinates are not necessarily in meters.

*

For information on the joint hierarchy used, see - * Avatar Standards.

+ * Avatar Standards.

* @function Avatar.getJointTranslation * @param {number} index - The index of the joint. * @returns {Vec3} The translation of the joint relative to its parent, in model coordinates. @@ -901,7 +901,7 @@ public: * @param {string} name - The name of the joint. * @param {Quat} rotation - The rotation of the joint relative to its parent. * @example Set your avatar to its default T-pose then rotate its right arm.
- * Avatar in T-pose with arm rotated + * Avatar in T-pose with arm rotated * // Set all joint translations and rotations to defaults. * var i, length, rotation, translation; * for (i = 0, length = MyAvatar.getJointNames().length; i < length; i++) { @@ -936,7 +936,7 @@ public: * @param {Vec3} translation - The translation of the joint relative to its parent, in model coordinates. * @example Stretch your avatar's neck. Depending on the avatar you are using, you will either see a gap between * the head and body or you will see the neck stretched.
- * Avatar with neck stretched + * Avatar with neck stretched * // Stretch your avatar's neck. * MyAvatar.setJointTranslation("Neck", Vec3.multiply(2, MyAvatar.getJointTranslation("Neck"))); * @@ -978,7 +978,7 @@ public: /**jsdoc * Gets the rotation of a joint relative to its parent. For information on the joint hierarchy used, see - * Avatar Standards. + * Avatar Standards. * @function Avatar.getJointRotation * @param {string} name - The name of the joint. * @returns {Quat} The rotation of the joint relative to its parent. @@ -993,7 +993,7 @@ public: * Gets the translation of a joint relative to its parent, in model coordinates. *

Warning: These coordinates are not necessarily in meters.

*

For information on the joint hierarchy used, see - * Avatar Standards.

+ * Avatar Standards.

* @function Avatar.getJointTranslation * @param {number} name - The name of the joint. * @returns {Vec3} The translation of the joint relative to its parent, in model coordinates. @@ -1038,7 +1038,7 @@ public: * @param {Quat[]} jointRotations - The rotations for all joints in the avatar. The values are in the same order as the * array returned by {@link MyAvatar.getJointNames}, or {@link Avatar.getJointNames} if using the Avatar API. * @example Set your avatar to its default T-pose then rotate its right arm.
- * Avatar in T-pose + * Avatar in T-pose * // Set all joint translations and rotations to defaults. * var i, length, rotation, translation; * for (i = 0, length = MyAvatar.getJointNames().length; i < length; i++) { @@ -1135,7 +1135,7 @@ public: * animation is complete. * @function Avatar.setBlendshape * @param {string} name - The name of the blendshape, per the - * {@link https://docs.projectathena.dev/create/avatars/avatar-standards.html#blendshapes Avatar Standards}. + * {@link https://docs.vircadia.dev/create/avatars/avatar-standards.html#blendshapes Avatar Standards}. * @param {number} value - A value between 0.0 and 1.0. * @example Open your avatar's mouth wide. * MyAvatar.hasScriptedBlendshapes = true; diff --git a/libraries/entities/src/EntityItemProperties.cpp b/libraries/entities/src/EntityItemProperties.cpp index 9afaa5e85b..df6e701ebe 100644 --- a/libraries/entities/src/EntityItemProperties.cpp +++ b/libraries/entities/src/EntityItemProperties.cpp @@ -778,7 +778,7 @@ EntityPropertyFlags EntityItemProperties::getChangedProperties() const { * @property {string} actionData="" - Base-64 encoded compressed dump of the actions associated with the entity. This property * is typically not used in scripts directly; rather, functions that manipulate an entity's actions update it, e.g., * {@link Entities.addAction}. The size of this property increases with the number of actions. Because this property value - * has to fit within a High Fidelity datagram packet, there is a limit to the number of actions that an entity can have; + * has to fit within a Vircadia datagram packet, there is a limit to the number of actions that an entity can have; * edits which would result in overflow are rejected. Read-only. * @property {Entities.RenderInfo} renderInfo - Information on the cost of rendering the entity. Currently information is only * provided for Model entities. Read-only. @@ -1215,7 +1215,7 @@ EntityPropertyFlags EntityItemProperties::getChangedProperties() const { * the PolyVox data. This property is typically not used in scripts directly; rather, functions that manipulate a PolyVox * entity update it. *

The size of this property increases with the size and complexity of the PolyVox entity, with the size depending on how - * the particular entity's voxels compress. Because this property value has to fit within a High Fidelity datagram packet, + * the particular entity's voxels compress. Because this property value has to fit within a Vircadia datagram packet, * there is a limit to the size and complexity of a PolyVox entity; edits which would result in an overflow are rejected.

* @property {Entities.PolyVoxSurfaceStyle} voxelSurfaceStyle=2 - The style of rendering the voxels' surface and how * neighboring PolyVox entities are joined. @@ -1366,7 +1366,7 @@ EntityPropertyFlags EntityItemProperties::getChangedProperties() const { * var METERS_TO_INCHES = 39.3701; * var entity = Entities.addEntity({ * type: "Web", - * sourceUrl: "https://projectathena.io/", + * sourceUrl: "https://vircadia.com/", * position: Vec3.sum(MyAvatar.position, Vec3.multiplyQbyV(MyAvatar.orientation, { x: 0, y: 0.75, z: -4 })), * rotation: MyAvatar.orientation, * dimensions: { @@ -5053,7 +5053,7 @@ bool EntityItemProperties::verifySignature(const QString& publicKey, const QByte bool EntityItemProperties::verifyStaticCertificateProperties() { // True IFF a non-empty certificateID matches the static certificate json. - // I.e., if we can verify that the certificateID was produced by High Fidelity signing the static certificate hash. + // I.e., if we can verify that the certificateID was produced by Vircadia signing the static certificate hash. return verifySignature(EntityItem::_marketplacePublicKey, getStaticCertificateHash(), QByteArray::fromBase64(getCertificateID().toUtf8())); } diff --git a/libraries/image/src/image/TextureProcessing.h b/libraries/image/src/image/TextureProcessing.h index 677d48c61f..326ec700a9 100644 --- a/libraries/image/src/image/TextureProcessing.h +++ b/libraries/image/src/image/TextureProcessing.h @@ -33,7 +33,7 @@ namespace TextureUsage { /**jsdoc *

Describes the type of texture.

*

See also: {@link Material} and - * {@link https://docs.projectathena.dev/create/3d-models/pbr-materials-guide.html|PBR Materials Guide}.

+ * {@link https://docs.vircadia.dev/create/3d-models/pbr-materials-guide.html|PBR Materials Guide}.

* * * diff --git a/libraries/midi/src/Midi.h b/libraries/midi/src/Midi.h index 986682d7f9..e2b84ec333 100644 --- a/libraries/midi/src/Midi.h +++ b/libraries/midi/src/Midi.h @@ -23,7 +23,7 @@ /**jsdoc * The Midi API provides the ability to connect Interface with musical instruments and other external or virtual * devices via the MIDI protocol. For further information and examples, see the tutorial: - * Use MIDI to Control Your Environment. + * Use MIDI to Control Your Environment. * *

Note: Only works on Windows.

* diff --git a/libraries/networking/src/NetworkingConstants.h b/libraries/networking/src/NetworkingConstants.h index fabf8b0e44..3bd84bc977 100644 --- a/libraries/networking/src/NetworkingConstants.h +++ b/libraries/networking/src/NetworkingConstants.h @@ -26,7 +26,7 @@ namespace NetworkingConstants { // at https://staging.highfidelity.com/user/tokens/new?for_domain_server=true const QUrl METAVERSE_SERVER_URL_STABLE { "https://metaverse.highfidelity.com" }; - const QUrl METAVERSE_SERVER_URL_STAGING { "https://staging.projectathena.io" }; + const QUrl METAVERSE_SERVER_URL_STAGING { "https://staging-metaverse.vircadia.com" }; } const QString HIFI_URL_SCHEME_ABOUT = "about"; diff --git a/libraries/plugins/src/plugins/SteamClientPlugin.h b/libraries/plugins/src/plugins/SteamClientPlugin.h index 07e320f8eb..e4d765882f 100644 --- a/libraries/plugins/src/plugins/SteamClientPlugin.h +++ b/libraries/plugins/src/plugins/SteamClientPlugin.h @@ -73,7 +73,7 @@ public slots: /**jsdoc * Opens Steam's "Choose Friends to invite" dialog if Interface is running under Steam. * @function Steam.openInviteOverlay - * @example + * @example * if (Steam.running) { * print("Invite Steam friends to joint you..."); * Steam.openInviteOverlay(); diff --git a/libraries/script-engine/src/Quat.h b/libraries/script-engine/src/Quat.h index 44abe62b24..23bfe56309 100644 --- a/libraries/script-engine/src/Quat.h +++ b/libraries/script-engine/src/Quat.h @@ -223,7 +223,7 @@ public slots: /**jsdoc * Gets the "front" direction that the camera would face if its orientation was set to the quaternion value. * This is a synonym for {@link Quat(0).getForward|Quat.getForward}. - * The High Fidelity camera has axes x = right, y = up, -z = forward. + * The Vircadia camera has axes x = right, y = up, -z = forward. * @function Quat(0).getFront * @param {Quat} orientation - A quaternion representing an orientation. * @returns {Vec3} The negative z-axis rotated by orientation. @@ -233,7 +233,7 @@ public slots: /**jsdoc * Gets the "forward" direction that the camera would face if its orientation was set to the quaternion value. * This is a synonym for {@link Quat(0).getFront|Quat.getFront}. - * The High Fidelity camera has axes x = right, y = up, -z = forward. + * The Vircadia camera has axes x = right, y = up, -z = forward. * @function Quat(0).getForward * @param {Quat} orientation - A quaternion representing an orientation. * @returns {Vec3} The negative z-axis rotated by orientation. @@ -245,7 +245,7 @@ public slots: /**jsdoc * Gets the "right" direction that the camera would have if its orientation was set to the quaternion value. - * The High Fidelity camera has axes x = right, y = up, -z = forward. + * The Vircadia camera has axes x = right, y = up, -z = forward. * @function Quat(0).getRight * @param {Quat} orientation - A quaternion representing an orientation. * @returns {Vec3} The x-axis rotated by orientation. @@ -254,7 +254,7 @@ public slots: /**jsdoc * Gets the "up" direction that the camera would have if its orientation was set to the quaternion value. - * The High Fidelity camera has axes x = right, y = up, -z = forward. + * The Vircadia camera has axes x = right, y = up, -z = forward. * @function Quat(0).getUp * @param {Quat} orientation - A quaternion representing an orientation. * @returns {Vec3} The y-axis rotated by orientation. diff --git a/libraries/script-engine/src/ScriptEngine.h b/libraries/script-engine/src/ScriptEngine.h index 0ae913431f..0d2333635f 100644 --- a/libraries/script-engine/src/ScriptEngine.h +++ b/libraries/script-engine/src/ScriptEngine.h @@ -417,7 +417,7 @@ public: /**jsdoc * Provides access to methods or objects provided in an external JavaScript or JSON file. - * See {@link https://docs.projectathena.dev/script/js-tips.html} for further details. + * See {@link https://docs.vircadia.dev/script/js-tips.html} for further details. * @function Script.require * @param {string} module - The module to use. May be a JavaScript file, a JSON file, or the name of a system module such * as "appUi" (i.e., the "appUi.js" system module JavaScript file). @@ -534,7 +534,7 @@ public: Q_INVOKABLE QUrl resourcesPath() const; /**jsdoc - * Starts timing a section of code in order to send usage data about it to High Fidelity. Shouldn't be used outside of the + * Starts timing a section of code in order to send usage data about it to Vircadia. Shouldn't be used outside of the * standard scripts. * @function Script.beginProfileRange * @param {string} label - A name that identifies the section of code. @@ -542,7 +542,7 @@ public: Q_INVOKABLE void beginProfileRange(const QString& label) const; /**jsdoc - * Finishes timing a section of code in order to send usage data about it to High Fidelity. Shouldn't be used outside of + * Finishes timing a section of code in order to send usage data about it to Vircadia. Shouldn't be used outside of * the standard scripts. * @function Script.endProfileRange * @param {string} label - A name that identifies the section of code. diff --git a/libraries/script-engine/src/Vec3.h b/libraries/script-engine/src/Vec3.h index a8fe51efe8..a8a8adece3 100644 --- a/libraries/script-engine/src/Vec3.h +++ b/libraries/script-engine/src/Vec3.h @@ -22,9 +22,9 @@ #include "GLMHelpers.h" /**jsdoc - * The Vec3 API provides facilities for generating and manipulating 3-dimensional vectors. High Fidelity uses a + * The Vec3 API provides facilities for generating and manipulating 3-dimensional vectors. Vircadia uses a * right-handed Cartesian coordinate system where the y-axis is the "up" and the negative z-axis is the "front" direction. - * High Fidelity coordinate system + * Vircadia coordinate system * * @namespace Vec3 * @variation 0 diff --git a/libraries/shared/src/SharedUtil.cpp b/libraries/shared/src/SharedUtil.cpp index f14be72a71..04217f5aab 100644 --- a/libraries/shared/src/SharedUtil.cpp +++ b/libraries/shared/src/SharedUtil.cpp @@ -1029,7 +1029,7 @@ bool getProcessorInfo(ProcessorInfo& info) { const QString& getInterfaceSharedMemoryName() { - static const QString applicationName = "High Fidelity Interface - " + qgetenv("USERNAME"); + static const QString applicationName = "Vircadia Interface - " + qgetenv("USERNAME"); return applicationName; } diff --git a/libraries/shared/src/Trace.cpp b/libraries/shared/src/Trace.cpp index e9e77b55ae..bfbe3d7442 100644 --- a/libraries/shared/src/Trace.cpp +++ b/libraries/shared/src/Trace.cpp @@ -167,7 +167,7 @@ void Tracer::serialize(const QString& filename) { QJsonObject { { "traceEvents", traceEvents }, { "otherData", QJsonObject { - { "version", QString { "High Fidelity Interface v1.0" } +BuildInfo::VERSION } + { "version", QString { "Vircadia Interface v1.0" } +BuildInfo::VERSION } } } } }; diff --git a/libraries/ui/src/ui/TabletScriptingInterface.h b/libraries/ui/src/ui/TabletScriptingInterface.h index dd5ec2a845..459007a348 100644 --- a/libraries/ui/src/ui/TabletScriptingInterface.h +++ b/libraries/ui/src/ui/TabletScriptingInterface.h @@ -103,9 +103,9 @@ public: * @function Tablet.getTablet * @param {string} name - A unique name that identifies the tablet. * @returns {TabletProxy} The tablet instance. - * @example + * @example * var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); - * tablet.gotoWebScreen("https://projectathena.io/"); + * tablet.gotoWebScreen("https://vircadia.com/"); */ Q_INVOKABLE TabletProxy* getTablet(const QString& tabletId); diff --git a/pkg-scripts/athena-server.spec b/pkg-scripts/athena-server.spec index 7910c8114b..b4bfe313a9 100644 --- a/pkg-scripts/athena-server.spec +++ b/pkg-scripts/athena-server.spec @@ -5,10 +5,10 @@ Name: athena-server Version: %{version} Release: 1%{?dist} -Summary: Project Athena metaverse platform, based on the High Fidelity Engine. +Summary: Vircadia metaverse platform, based on the High Fidelity Engine. License: ASL 2.0 -URL: https://projectathena.io +URL: https://vircadia.com Source0: https://github.com/daleglass/athena-builder/blob/master/athena_builder #BuildRequires: systemd-rpm-macros @@ -19,8 +19,8 @@ AutoReq: no AutoProv: no %description -Project Athena allows creation and sharing of VR experiences. - The Project Athena metaverse provides built-in social features, including avatar interactions, spatialized audio and interactive physics. Additionally, you have the ability to import any 3D object into your virtual environment. +Vircadia allows creation and sharing of VR experiences. + The Vircadia metaverse provides built-in social features, including avatar interactions, spatialized audio and interactive physics. Additionally, you have the ability to import any 3D object into your virtual environment. %prep diff --git a/script-archive/afk.js b/script-archive/afk.js index 5977c6384a..46441b8886 100644 --- a/script-archive/afk.js +++ b/script-archive/afk.js @@ -6,7 +6,7 @@ // Copyright 2015 High Fidelity, Inc. // kevintown.net // -// JavaScript for the High Fidelity interface that creates an away from keyboard functionality by providing a UI and keyPressEvent which will mute toggle the connected microphone, face tracking dde and set the avatar to a hand raise pose. +// JavaScript for the Vircadia interface that creates an away from keyboard functionality by providing a UI and keyPressEvent which will mute toggle the connected microphone, face tracking dde and set the avatar to a hand raise pose. // // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html diff --git a/script-archive/tests/performance/renderableMatrix.js b/script-archive/tests/performance/renderableMatrix.js index 04946328cc..2108e35519 100644 --- a/script-archive/tests/performance/renderableMatrix.js +++ b/script-archive/tests/performance/renderableMatrix.js @@ -114,7 +114,7 @@ Script.setInterval(function () { if (isModel) { properties.modelURL = type; } else if (type === 'Web') { - properties.sourceUrl = 'https://projectathena.io'; + properties.sourceUrl = 'https://vircadia.com'; } else { properties.color = { red: x / ROWS_X * 255, green: y / ROWS_Y * 255, blue: z / ROWS_Z * 255 }; if (type === 'ParticleEffect') { diff --git a/script-archive/tutorials/fireworks/chapter1/fireworksLaunchButtonEntityScript.js b/script-archive/tutorials/fireworks/chapter1/fireworksLaunchButtonEntityScript.js index 1232bfc843..f518701eb1 100644 --- a/script-archive/tutorials/fireworks/chapter1/fireworksLaunchButtonEntityScript.js +++ b/script-archive/tutorials/fireworks/chapter1/fireworksLaunchButtonEntityScript.js @@ -4,7 +4,7 @@ // Created by Eric Levin on 3/7/2016 // Copyright 2016 High Fidelity, Inc. // -// This is the chapter 1 entity script of the fireworks tutorial (https://docs.highfidelity.com/docs/fireworks-scripting-tutorial) +// This is the chapter 1 entity script of the fireworks tutorial (https://docs.vircadia.dev/docs/fireworks-scripting-tutorial) // // Distributed under the Apache License, Version 2.0. diff --git a/script-archive/tutorials/fireworks/chapter1/fireworksLaunchButtonSpawner.js b/script-archive/tutorials/fireworks/chapter1/fireworksLaunchButtonSpawner.js index 31d5e00e00..921c0508ee 100644 --- a/script-archive/tutorials/fireworks/chapter1/fireworksLaunchButtonSpawner.js +++ b/script-archive/tutorials/fireworks/chapter1/fireworksLaunchButtonSpawner.js @@ -4,7 +4,7 @@ // Created by Eric Levin on 3/7/2016 // Copyright 2016 High Fidelity, Inc. // -// This is the chapter 1 interface script of the fireworks tutorial (https://docs.highfidelity.com/docs/fireworks-scripting-tutorial) +// This is the chapter 1 interface script of the fireworks tutorial (https://docs.vircadia.dev/docs/fireworks-scripting-tutorial) // // Distributed under the Apache License, Version 2.0. diff --git a/script-archive/tutorials/fireworks/chapter2/fireworksLaunchButtonEntityScript.js b/script-archive/tutorials/fireworks/chapter2/fireworksLaunchButtonEntityScript.js index 66d2e96858..ba16e8af5b 100644 --- a/script-archive/tutorials/fireworks/chapter2/fireworksLaunchButtonEntityScript.js +++ b/script-archive/tutorials/fireworks/chapter2/fireworksLaunchButtonEntityScript.js @@ -4,7 +4,7 @@ // Created by Eric Levin on 3/7/2016 // Copyright 2016 High Fidelity, Inc. // -// This is the chapter 2 entity script of the fireworks tutorial (https://docs.highfidelity.com/docs/fireworks-scripting-tutorial) +// This is the chapter 2 entity script of the fireworks tutorial (https://docs.vircadia.dev/docs/fireworks-scripting-tutorial) // // Distributed under the Apache License, Version 2.0. diff --git a/script-archive/tutorials/fireworks/chapter2/fireworksLaunchButtonSpawner.js b/script-archive/tutorials/fireworks/chapter2/fireworksLaunchButtonSpawner.js index 19fd67f6c4..e55e7f9d43 100644 --- a/script-archive/tutorials/fireworks/chapter2/fireworksLaunchButtonSpawner.js +++ b/script-archive/tutorials/fireworks/chapter2/fireworksLaunchButtonSpawner.js @@ -4,7 +4,7 @@ // Created by Eric Levin on 3/7/2016 // Copyright 2016 High Fidelity, Inc. // -// This is the chapter 2 interface script of the fireworks tutorial (https://docs.highfidelity.com/docs/fireworks-scripting-tutorial) +// This is the chapter 2 interface script of the fireworks tutorial (https://docs.vircadia.dev/docs/fireworks-scripting-tutorial) // // Distributed under the Apache License, Version 2.0. diff --git a/script-archive/tutorials/fireworks/chapter3/fireworksLaunchButtonEntityScript.js b/script-archive/tutorials/fireworks/chapter3/fireworksLaunchButtonEntityScript.js index f811d95315..faccec5b5c 100644 --- a/script-archive/tutorials/fireworks/chapter3/fireworksLaunchButtonEntityScript.js +++ b/script-archive/tutorials/fireworks/chapter3/fireworksLaunchButtonEntityScript.js @@ -4,7 +4,7 @@ // Created by Eric Levin on 3/7/2016 // Copyright 2016 High Fidelity, Inc. // -// This is the chapter 3 entity script of the fireworks tutorial (https://docs.highfidelity.com/docs/fireworks-scripting-tutorial) +// This is the chapter 3 entity script of the fireworks tutorial (https://docs.vircadia.dev/docs/fireworks-scripting-tutorial) // // Distributed under the Apache License, Version 2.0. diff --git a/script-archive/tutorials/fireworks/chapter3/fireworksLaunchButtonSpawner.js b/script-archive/tutorials/fireworks/chapter3/fireworksLaunchButtonSpawner.js index 6b77b2609a..0cde1cbd9c 100644 --- a/script-archive/tutorials/fireworks/chapter3/fireworksLaunchButtonSpawner.js +++ b/script-archive/tutorials/fireworks/chapter3/fireworksLaunchButtonSpawner.js @@ -4,7 +4,7 @@ // Created by Eric Levin on 3/7/2016 // Copyright 2016 High Fidelity, Inc. // -// This is the chapter 3 interface script of the fireworks tutorial (https://docs.highfidelity.com/docs/fireworks-scripting-tutorial) +// This is the chapter 3 interface script of the fireworks tutorial (https://docs.vircadia.dev/docs/fireworks-scripting-tutorial) // // Distributed under the Apache License, Version 2.0. diff --git a/scripts/system/create/edit.js b/scripts/system/create/edit.js index ef07aa4d6e..120988b5a3 100644 --- a/scripts/system/create/edit.js +++ b/scripts/system/create/edit.js @@ -427,7 +427,7 @@ const DEFAULT_ENTITY_PROPERTIES = { y: 0.9, z: 0.01 }, - sourceUrl: "https://projectathena.io/", + sourceUrl: "https://vircadia.com/", dpi: 30, }, ParticleEffect: { diff --git a/server-console/package.json b/server-console/package.json index ed01a9c89e..1ceed08d4d 100644 --- a/server-console/package.json +++ b/server-console/package.json @@ -1,7 +1,7 @@ { "name": "VircadiaConsole", "description": "Vircadia Console", - "author": "High Fidelity", + "author": "Vircadia", "license": "Apache-2.0", "version": "1.0.0", "keywords": [ diff --git a/tools/ac-client/src/ACClientApp.cpp b/tools/ac-client/src/ACClientApp.cpp index 3b5db1a1b1..2fe5d4c783 100644 --- a/tools/ac-client/src/ACClientApp.cpp +++ b/tools/ac-client/src/ACClientApp.cpp @@ -29,7 +29,7 @@ ACClientApp::ACClientApp(int argc, char* argv[]) : { // parse command-line QCommandLineParser parser; - parser.setApplicationDescription("High Fidelity AC client"); + parser.setApplicationDescription("Vircadia AC client"); const QCommandLineOption helpOption = parser.addHelpOption(); diff --git a/tools/atp-client/src/ATPClientApp.cpp b/tools/atp-client/src/ATPClientApp.cpp index 09fcf38dff..4ae5adf29e 100644 --- a/tools/atp-client/src/ATPClientApp.cpp +++ b/tools/atp-client/src/ATPClientApp.cpp @@ -36,7 +36,7 @@ ATPClientApp::ATPClientApp(int argc, char* argv[]) : { // parse command-line QCommandLineParser parser; - parser.setApplicationDescription("High Fidelity ATP-Client"); + parser.setApplicationDescription("Vircadia ATP-Client"); const QCommandLineOption helpOption = parser.addHelpOption(); diff --git a/tools/ci-scripts/linux-package-release/package-and-upload.sh b/tools/ci-scripts/linux-package-release/package-and-upload.sh index b38434dcc9..9d75a1ebd7 100755 --- a/tools/ci-scripts/linux-package-release/package-and-upload.sh +++ b/tools/ci-scripts/linux-package-release/package-and-upload.sh @@ -8,20 +8,20 @@ for package_name in "${packages_systemd[@]}" do SOURCE_DESTINATION_LIST="${WORKSPACE}/build/${package_name}/${package_name}=/usr/share/hifi/${package_name}/ " if [ "$package_name" == "domain-server" ]; then - DESCRIPTION="High Fidelity Domain server." + DESCRIPTION="Vircadia Domain server." SOURCE_DESTINATION_LIST+="${WORKSPACE}/build/${package_name}/resources/=/usr/share/hifi/${package_name}/resources " SOURCE_DESTINATION_LIST+="${WORKSPACE}/build/ext/makefiles/quazip/project/build/libquazip5.so.1.0.0=/usr/share/hifi/${package_name}/libquazip5.so.1" elif [ "$package_name" == "assignment-client" ]; then - DESCRIPTION="High Fidelity Assignment clients. Services target a local domain server. Different assignment clients are managed independently with systemd." + DESCRIPTION="Vircadia Assignment clients. Services target a local domain server. Different assignment clients are managed independently with systemd." SOURCE_DESTINATION_LIST+="${WORKSPACE}/build/${package_name}/plugins/=/usr/share/hifi/${package_name}/plugins " SOURCE_DESTINATION_LIST+="${WORKSPACE}/build/ext/makefiles/quazip/project/build/libquazip5.so.1.0.0=/usr/share/hifi/${package_name}/libquazip5.so.1 " SOURCE_DESTINATION_LIST+="${WORKSPACE}/build/${package_name}/oven=/usr/share/hifi/${package_name}/oven" elif [ "$package_name" == "ice-server" ]; then - DESCRIPTION="High Fidelity ICE server." + DESCRIPTION="Vircadia ICE server." fi - fpm -s dir -t deb -n hifi-${prefix}${package_name} -v ${VERSION} -d hifiqt5.12.3 --vendor "High Fidelity Inc" -m "" \ - --url "https://highfidelity.com" --license "Apache License 2.0" --description "${DESCRIPTION}" -d libgomp1 -d libtbb2 -d libgl1-mesa-glx -d libnss3 \ + fpm -s dir -t deb -n hifi-${prefix}${package_name} -v ${VERSION} -d hifiqt5.12.3 --vendor "Vircadia" -m "" \ + --url "https://vircadia.com" --license "Apache License 2.0" --description "${DESCRIPTION}" -d libgomp1 -d libtbb2 -d libgl1-mesa-glx -d libnss3 \ -d libxi6 -d libxcursor1 -d libxcomposite1 -d libasound2 -d libxtst6 -d libxslt1.1 --template-scripts --template-value "service"="hifi-${package_name}" \ --deb-systemd ${LOCAL_PATH}/hifi-${package_name} --before-install ${LOCAL_PATH}/${package_name}-before-install.sh \ --after-install ${LOCAL_PATH}/after-install.sh --before-remove ${LOCAL_PATH}/before-remove.sh \ diff --git a/tools/ice-client/src/ICEClientApp.cpp b/tools/ice-client/src/ICEClientApp.cpp index 0301fad6f4..2f98caafd9 100644 --- a/tools/ice-client/src/ICEClientApp.cpp +++ b/tools/ice-client/src/ICEClientApp.cpp @@ -24,7 +24,7 @@ ICEClientApp::ICEClientApp(int argc, char* argv[]) : { // parse command-line QCommandLineParser parser; - parser.setApplicationDescription("High Fidelity ICE client"); + parser.setApplicationDescription("Vircadia ICE client"); parser.addHelpOption(); const QCommandLineOption helpOption = parser.addHelpOption(); diff --git a/tools/nitpick/CMakeLists.txt b/tools/nitpick/CMakeLists.txt index d65505415d..e0b5c53c2d 100644 --- a/tools/nitpick/CMakeLists.txt +++ b/tools/nitpick/CMakeLists.txt @@ -72,7 +72,7 @@ elseif (WIN32) set(CONFIGURE_ICON_RC_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/Icon.rc") configure_file("${HF_CMAKE_DIR}/templates/Icon.rc.in" ${CONFIGURE_ICON_RC_OUTPUT}) - set(APP_FULL_NAME "High Fidelity Nitpick") + set(APP_FULL_NAME "Vircadia Nitpick") set(CONFIGURE_VERSION_INFO_RC_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/VersionInfo.rc") configure_file("${HF_CMAKE_DIR}/templates/VersionInfo.rc.in" ${CONFIGURE_VERSION_INFO_RC_OUTPUT}) diff --git a/tools/oven/src/OvenCLIApplication.cpp b/tools/oven/src/OvenCLIApplication.cpp index 5b0de4d6fa..44e487c20b 100644 --- a/tools/oven/src/OvenCLIApplication.cpp +++ b/tools/oven/src/OvenCLIApplication.cpp @@ -42,7 +42,7 @@ void OvenCLIApplication::parseCommandLine(int argc, char* argv[]) { // parse the command line parameters QCommandLineParser parser; - parser.setApplicationDescription("High Fidelity Oven"); + parser.setApplicationDescription("Vircadia Oven"); parser.addOptions({ { 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" }, diff --git a/tools/oven/src/ui/OvenMainWindow.cpp b/tools/oven/src/ui/OvenMainWindow.cpp index 59cad3aac5..746a1d06a2 100644 --- a/tools/oven/src/ui/OvenMainWindow.cpp +++ b/tools/oven/src/ui/OvenMainWindow.cpp @@ -18,7 +18,7 @@ OvenMainWindow::OvenMainWindow(QWidget *parent, Qt::WindowFlags flags) : QMainWindow(parent, flags) { - setWindowTitle("High Fidelity Oven"); + setWindowTitle("Vircadia Oven"); // give the window a fixed width that will never change setFixedWidth(FIXED_WINDOW_WIDTH); diff --git a/tools/oven/src/ui/ResultsWindow.cpp b/tools/oven/src/ui/ResultsWindow.cpp index feb7fbc4f1..95aa0fac16 100644 --- a/tools/oven/src/ui/ResultsWindow.cpp +++ b/tools/oven/src/ui/ResultsWindow.cpp @@ -23,7 +23,7 @@ ResultsWindow::ResultsWindow(QWidget* parent) : QWidget(parent) { // add a title to this window to identify it - setWindowTitle("High Fidelity Oven - Bake Results"); + setWindowTitle("Vircadia Oven - Bake Results"); // give this dialog the same starting width as the main application window resize(FIXED_WINDOW_WIDTH, size().height()); diff --git a/tools/skeleton-dump/src/SkeletonDumpApp.cpp b/tools/skeleton-dump/src/SkeletonDumpApp.cpp index 42a1c78090..14c3cb625c 100644 --- a/tools/skeleton-dump/src/SkeletonDumpApp.cpp +++ b/tools/skeleton-dump/src/SkeletonDumpApp.cpp @@ -19,7 +19,7 @@ SkeletonDumpApp::SkeletonDumpApp(int argc, char* argv[]) : QCoreApplication(argc // parse command-line QCommandLineParser parser; - parser.setApplicationDescription("High Fidelity FBX Skeleton Analyzer"); + parser.setApplicationDescription("Vircadia FBX Skeleton Analyzer"); const QCommandLineOption helpOption = parser.addHelpOption(); const QCommandLineOption verboseOutput("v", "verbose output"); diff --git a/tools/udt-test/src/UDTTest.cpp b/tools/udt-test/src/UDTTest.cpp index 65bf2c7ebd..dc22717165 100644 --- a/tools/udt-test/src/UDTTest.cpp +++ b/tools/udt-test/src/UDTTest.cpp @@ -216,7 +216,7 @@ UDTTest::UDTTest(int& argc, char** argv) : void UDTTest::parseArguments() { // use a QCommandLineParser to setup command line arguments and give helpful output - _argumentParser.setApplicationDescription("High Fidelity UDT Protocol Test Client"); + _argumentParser.setApplicationDescription("Vircadia UDT Protocol Test Client"); _argumentParser.addHelpOption(); const QCommandLineOption helpOption = _argumentParser.addHelpOption(); diff --git a/tools/vhacd-util/src/VHACDUtilApp.cpp b/tools/vhacd-util/src/VHACDUtilApp.cpp index 3d675f8baf..1ec54f8d2a 100644 --- a/tools/vhacd-util/src/VHACDUtilApp.cpp +++ b/tools/vhacd-util/src/VHACDUtilApp.cpp @@ -106,7 +106,7 @@ VHACDUtilApp::VHACDUtilApp(int argc, char* argv[]) : // parse command-line QCommandLineParser parser; - parser.setApplicationDescription("High Fidelity Object Decomposer"); + parser.setApplicationDescription("Vircadia Object Decomposer"); parser.addHelpOption(); const QCommandLineOption helpOption = parser.addHelpOption(); From e9297eb1314c89bb19d3c28454d0bf6e4aa3e7e0 Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Tue, 7 Apr 2020 16:17:09 -0400 Subject: [PATCH 024/160] Correction. --- interface/src/FancyCamera.h | 2 +- launchers/qt/src/main.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/interface/src/FancyCamera.h b/interface/src/FancyCamera.h index f7be71e053..2a131d991f 100644 --- a/interface/src/FancyCamera.h +++ b/interface/src/FancyCamera.h @@ -20,7 +20,7 @@ class FancyCamera : public Camera { /**jsdoc * The Camera API provides access to the "camera" that defines your view in desktop and HMD display modes. - * The High Fidelity camera has axes x = right, y = up, -z = forward. + * The Vircadia camera has axes x = right, y = up, -z = forward. * * @namespace Camera * diff --git a/launchers/qt/src/main.cpp b/launchers/qt/src/main.cpp index 58aa1ba7ba..75c35cd708 100644 --- a/launchers/qt/src/main.cpp +++ b/launchers/qt/src/main.cpp @@ -1,4 +1,4 @@ -"Vircadia#include +#include #include From 9dce990e8f2ceb0b817d72980f328fbcdb8d19a4 Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Tue, 7 Apr 2020 18:48:24 -0400 Subject: [PATCH 025/160] Help dialog updated. --- .../resources/images/about-vircadia-logo.png | Bin 0 -> 54627 bytes .../qml/hifi/dialogs/TabletAboutDialog.qml | 11 ++++++++--- interface/src/Menu.cpp | 4 ++-- 3 files changed, 10 insertions(+), 5 deletions(-) create mode 100644 interface/resources/images/about-vircadia-logo.png diff --git a/interface/resources/images/about-vircadia-logo.png b/interface/resources/images/about-vircadia-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..79d01be595fb9fc2f4b1e73c7fad30b490ec896c GIT binary patch literal 54627 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 About Project Athena - action = addActionToQMenuAndActionHash(helpMenu, "About Project Athena"); + // Help > About Vircadia + action = addActionToQMenuAndActionHash(helpMenu, "About Vircadia"); connect(action, &QAction::triggered, [] { qApp->showDialog(QString("hifi/dialogs/AboutDialog.qml"), QString("hifi/dialogs/TabletAboutDialog.qml"), "AboutDialog"); From 9b1635f9ccb53b57542e45e36ac41d8f72a5fcba Mon Sep 17 00:00:00 2001 From: HifiExperiments Date: Tue, 7 Apr 2020 15:56:32 -0700 Subject: [PATCH 026/160] improve performance of MyAvatar::simulate when you have lots of entity descendants --- interface/src/avatar/MyAvatar.cpp | 13 +---- libraries/entities/src/EntityTree.cpp | 37 ++++++++++---- libraries/entities/src/EntityTree.h | 5 +- libraries/shared/src/SpatiallyNestable.cpp | 56 ++++++++++++++++++++-- libraries/shared/src/SpatiallyNestable.h | 4 +- 5 files changed, 88 insertions(+), 27 deletions(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 76575ab8ef..75bd5c0b49 100644 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -972,7 +972,7 @@ void MyAvatar::simulate(float deltaTime, bool inView) { recorder->recordFrame(FRAME_TYPE, toFrame(*this)); } - locationChanged(true, false); + locationChanged(true, true); // if a entity-child of this avatar has moved outside of its queryAACube, update the cube and tell the entity server. auto entityTreeRenderer = qApp->getEntities(); EntityTreePointer entityTree = entityTreeRenderer ? entityTreeRenderer->getTree() : nullptr; @@ -981,16 +981,7 @@ void MyAvatar::simulate(float deltaTime, bool inView) { entityTree->withWriteLock([&] { zoneInteractionProperties = entityTreeRenderer->getZoneInteractionProperties(); EntityEditPacketSender* packetSender = qApp->getEntityEditPacketSender(); - forEachDescendant([&](SpatiallyNestablePointer object) { - locationChanged(true, false); - // we need to update attached queryAACubes in our own local tree so point-select always works - // however we don't want to flood the update pipeline with AvatarEntity updates, so we assume - // others have all info required to properly update queryAACube of AvatarEntities on their end - EntityItemPointer entity = std::dynamic_pointer_cast(object); - bool iShouldTellServer = !(entity && entity->isAvatarEntity()); - const bool force = false; - entityTree->updateEntityQueryAACube(object, packetSender, force, iShouldTellServer); - }); + entityTree->updateEntityQueryAACube(shared_from_this(), packetSender, false, true); }); bool isPhysicsEnabled = qApp->isPhysicsEnabled(); bool zoneAllowsFlying = zoneInteractionProperties.first; diff --git a/libraries/entities/src/EntityTree.cpp b/libraries/entities/src/EntityTree.cpp index dbcfcb3d07..81f32c6405 100644 --- a/libraries/entities/src/EntityTree.cpp +++ b/libraries/entities/src/EntityTree.cpp @@ -3150,21 +3150,30 @@ glm::vec3 EntityTree::getUnscaledDimensionsForID(const QUuid& id) { return glm::vec3(1.0f); } -void EntityTree::updateEntityQueryAACubeWorker(SpatiallyNestablePointer object, EntityEditPacketSender* packetSender, +AACube EntityTree::updateEntityQueryAACubeWorker(SpatiallyNestablePointer object, EntityEditPacketSender* packetSender, MovingEntitiesOperator& moveOperator, bool force, bool tellServer) { + glm::vec3 min(FLT_MAX); + glm::vec3 max(-FLT_MAX); + // if the queryBox has changed, tell the entity-server EntityItemPointer entity = std::dynamic_pointer_cast(object); if (entity) { bool queryAACubeChanged = false; if (!entity->hasChildren()) { - // updateQueryAACube will also update all ancestors' AACubes, so we only need to call this for leaf nodes - queryAACubeChanged = entity->updateQueryAACube(); + queryAACubeChanged = entity->updateQueryAACube(false); + AACube entityAACube = entity->getQueryAACube(); + min = glm::min(min, entityAACube.getMinimumPoint()); + max = glm::max(max, entityAACube.getMaximumPoint()); } else { - AACube oldCube = entity->getQueryAACube(); object->forEachChild([&](SpatiallyNestablePointer descendant) { - updateEntityQueryAACubeWorker(descendant, packetSender, moveOperator, force, tellServer); + AACube entityAACube = updateEntityQueryAACubeWorker(descendant, packetSender, moveOperator, force, tellServer); + min = glm::min(min, entityAACube.getMinimumPoint()); + max = glm::max(max, entityAACube.getMaximumPoint()); }); - queryAACubeChanged = oldCube != entity->getQueryAACube(); + queryAACubeChanged = entity->updateQueryAACubeWithDescendantAACube(AACube(Extents(min, max)), false); + AACube newCube = entity->getQueryAACube(); + min = glm::min(min, newCube.getMinimumPoint()); + max = glm::max(max, newCube.getMaximumPoint()); } if (queryAACubeChanged || force) { @@ -3173,9 +3182,10 @@ void EntityTree::updateEntityQueryAACubeWorker(SpatiallyNestablePointer object, if (success) { moveOperator.addEntityToMoveList(entity, newCube); } - // send an edit packet to update the entity-server about the queryAABox. We do this for domain-hosted - // entities as well as for avatar-entities; the packet-sender will route the update accordingly - if (tellServer && packetSender && (entity->isDomainEntity() || entity->isAvatarEntity())) { + // send an edit packet to update the entity-server about the queryAABox. We only do this for domain-hosted + // entities, as we don't want to flood the update pipeline with AvatarEntity updates, so we assume + // others have all info required to properly update queryAACube of AvatarEntities on their end + if (tellServer && packetSender && entity->isDomainEntity()) { quint64 now = usecTimestampNow(); EntityItemProperties properties = entity->getProperties(); properties.setQueryAACubeDirty(); @@ -3190,7 +3200,16 @@ void EntityTree::updateEntityQueryAACubeWorker(SpatiallyNestablePointer object, entity->markDirtyFlags(Simulation::DIRTY_POSITION); entityChanged(entity); } + } else { + // if we're called on a non-entity, we might still have entity descendants + object->forEachChild([&](SpatiallyNestablePointer descendant) { + AACube entityAACube = updateEntityQueryAACubeWorker(descendant, packetSender, moveOperator, force, tellServer); + min = glm::min(min, entityAACube.getMinimumPoint()); + max = glm::max(max, entityAACube.getMaximumPoint()); + }); } + + return AACube(Extents(min, max)); } void EntityTree::updateEntityQueryAACube(SpatiallyNestablePointer object, EntityEditPacketSender* packetSender, diff --git a/libraries/entities/src/EntityTree.h b/libraries/entities/src/EntityTree.h index a0fcbd3244..05f5230ff3 100644 --- a/libraries/entities/src/EntityTree.h +++ b/libraries/entities/src/EntityTree.h @@ -397,8 +397,9 @@ private: std::map _namedPaths; - void updateEntityQueryAACubeWorker(SpatiallyNestablePointer object, EntityEditPacketSender* packetSender, - MovingEntitiesOperator& moveOperator, bool force, bool tellServer); + // Return an AACube containing object and all its entity descendants + AACube updateEntityQueryAACubeWorker(SpatiallyNestablePointer object, EntityEditPacketSender* packetSender, + MovingEntitiesOperator& moveOperator, bool force, bool tellServer); }; void convertGrabUserDataToProperties(EntityItemProperties& properties); diff --git a/libraries/shared/src/SpatiallyNestable.cpp b/libraries/shared/src/SpatiallyNestable.cpp index 8387270905..c1c1fd38d9 100644 --- a/libraries/shared/src/SpatiallyNestable.cpp +++ b/libraries/shared/src/SpatiallyNestable.cpp @@ -1144,7 +1144,7 @@ AACube SpatiallyNestable::calculateInitialQueryAACube(bool& success) { } } -bool SpatiallyNestable::updateQueryAACube() { +bool SpatiallyNestable::updateQueryAACube(bool updateParent) { if (!queryAACubeNeedsUpdate()) { return false; } @@ -1171,9 +1171,39 @@ bool SpatiallyNestable::updateQueryAACube() { _queryAACubeSet = true; - auto parent = getParentPointer(success); - if (success && parent) { - parent->updateQueryAACube(); + if (updateParent) { + auto parent = getParentPointer(success); + if (success && parent) { + parent->updateQueryAACube(); + } + } + + return true; +} + +bool SpatiallyNestable::updateQueryAACubeWithDescendantAACube(const AACube& descendantAACube, bool updateParent) { + if (!queryAACubeNeedsUpdateWithDescendantAACube(descendantAACube)) { + return false; + } + + bool success; + AACube initialQueryAACube = calculateInitialQueryAACube(success); + if (!success) { + return false; + } + _queryAACube = initialQueryAACube; + _queryAACubeIsPuffed = shouldPuffQueryAACube(); + + _queryAACube += descendantAACube.getMinimumPoint(); + _queryAACube += descendantAACube.getMaximumPoint(); + + _queryAACubeSet = true; + + if (updateParent) { + auto parent = getParentPointer(success); + if (success && parent) { + parent->updateQueryAACube(); + } } return true; @@ -1216,6 +1246,24 @@ bool SpatiallyNestable::queryAACubeNeedsUpdate() const { return childNeedsUpdate; } +bool SpatiallyNestable::queryAACubeNeedsUpdateWithDescendantAACube(const AACube& descendantAACube) const { + if (!_queryAACubeSet) { + return true; + } + + bool success; + AACube maxAACube = getMaximumAACube(success); + if (success && !_queryAACube.contains(maxAACube)) { + return true; + } + + if (shouldPuffQueryAACube() != _queryAACubeIsPuffed) { + return true; + } + + return !_queryAACube.contains(descendantAACube); +} + AACube SpatiallyNestable::getQueryAACube(bool& success) const { if (_queryAACubeSet) { success = true; diff --git a/libraries/shared/src/SpatiallyNestable.h b/libraries/shared/src/SpatiallyNestable.h index f52dc4bf8b..01e3b045ad 100644 --- a/libraries/shared/src/SpatiallyNestable.h +++ b/libraries/shared/src/SpatiallyNestable.h @@ -117,8 +117,10 @@ public: virtual void setQueryAACube(const AACube& queryAACube); virtual bool queryAACubeNeedsUpdate() const; + virtual bool queryAACubeNeedsUpdateWithDescendantAACube(const AACube& descendantAACube) const; virtual bool shouldPuffQueryAACube() const { return false; } - bool updateQueryAACube(); + bool updateQueryAACube(bool updateParent = true); + bool updateQueryAACubeWithDescendantAACube(const AACube& descendentAACube, bool updateParent = true); void forceQueryAACubeUpdate() { _queryAACubeSet = false; } virtual AACube getQueryAACube(bool& success) const; virtual AACube getQueryAACube() const; From 63492d55d143b233d9aa78ba07d1062e8c69f85f Mon Sep 17 00:00:00 2001 From: Fluffy Jenkins Date: Fri, 10 Apr 2020 21:39:11 +0100 Subject: [PATCH 027/160] Made Gridchat muted by default --- scripts/communityModules/chat/FloofChat.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/communityModules/chat/FloofChat.js b/scripts/communityModules/chat/FloofChat.js index 905dbeaafa..92382c3199 100644 --- a/scripts/communityModules/chat/FloofChat.js +++ b/scripts/communityModules/chat/FloofChat.js @@ -53,7 +53,7 @@ var settingsRoot = "FloofChat"; var athenaGotoUrl = "https://metaverse.projectathena.io/interim/d-goto/app/goto.json"; var gotoJSONUrl = Settings.getValue(settingsRoot + "/gotoJSONUrl", athenaGotoUrl); -var muted = Settings.getValue(settingsRoot + "/muted", {"Local": false, "Domain": false, "Grid": false}); +var muted = Settings.getValue(settingsRoot + "/muted", {"Local": false, "Domain": false, "Grid": true}); var ws; var wsReady = false; From 9187a680cd200f1703239055bdd86c299ebc0f37 Mon Sep 17 00:00:00 2001 From: Heather Anderson Date: Fri, 10 Apr 2020 17:10:41 -0700 Subject: [PATCH 028/160] Apply suggestions from code review Adding suggested changes from ctrlaltdavid Co-Authored-By: David Rowe --- interface/src/ui/PreferencesDialog.cpp | 2 +- libraries/networking/src/UserActivityLogger.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/interface/src/ui/PreferencesDialog.cpp b/interface/src/ui/PreferencesDialog.cpp index 5791a06b85..4ce30063e2 100644 --- a/interface/src/ui/PreferencesDialog.cpp +++ b/interface/src/ui/PreferencesDialog.cpp @@ -262,7 +262,7 @@ void setupPreferences() { auto getter = []()->bool { return !Menu::getInstance()->isOptionChecked(MenuOption::DisableCrashLogger); }; auto setter = [](bool value) { Menu::getInstance()->setIsOptionChecked(MenuOption::DisableCrashLogger, !value); }; preferences->addPreference(new CheckPreference("Privacy", "Send crashes - Vircadia uses information provided by your " - "client to improve the product through crash events. By allowing Vircadia to collect " + "client to improve the product through crash reports. By allowing Vircadia to collect " "this information you are helping to improve the product. ", getter, setter)); } diff --git a/libraries/networking/src/UserActivityLogger.h b/libraries/networking/src/UserActivityLogger.h index a9bc5a8509..881c287341 100644 --- a/libraries/networking/src/UserActivityLogger.h +++ b/libraries/networking/src/UserActivityLogger.h @@ -59,7 +59,7 @@ private slots: private: UserActivityLogger(); Setting::Handle _disabled { "UserActivityLoggerDisabled", true }; - Setting::Handle _crashDisabled { "CrashLoggerDisabled", true }; + Setting::Handle _crashDisabled { "CrashLoggerDisabled", false }; QElapsedTimer _timer; }; From bc5dd45187329d1b2c3c5eb467be7c77aab597d1 Mon Sep 17 00:00:00 2001 From: Heather Anderson Date: Fri, 10 Apr 2020 22:51:20 -0700 Subject: [PATCH 029/160] Update interface/src/ui/PreferencesDialog.cpp Removed extraneous ! from value retrieval (as if there aren't enough of them in here) --- interface/src/ui/PreferencesDialog.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/src/ui/PreferencesDialog.cpp b/interface/src/ui/PreferencesDialog.cpp index 4ce30063e2..b59aa88a70 100644 --- a/interface/src/ui/PreferencesDialog.cpp +++ b/interface/src/ui/PreferencesDialog.cpp @@ -259,7 +259,7 @@ void setupPreferences() { } { - auto getter = []()->bool { return !Menu::getInstance()->isOptionChecked(MenuOption::DisableCrashLogger); }; + auto getter = []()->bool { return Menu::getInstance()->isOptionChecked(MenuOption::DisableCrashLogger); }; auto setter = [](bool value) { Menu::getInstance()->setIsOptionChecked(MenuOption::DisableCrashLogger, !value); }; preferences->addPreference(new CheckPreference("Privacy", "Send crashes - Vircadia uses information provided by your " "client to improve the product through crash reports. By allowing Vircadia to collect " From 84e5a27b322b965abb5f84aa65ef8aa4b4704242 Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Wed, 15 Apr 2020 21:14:32 -0400 Subject: [PATCH 030/160] Add community-apps repo to default QML whitelist. --- interface/src/Application.cpp | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index a73281e569..932609ecfb 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -3167,7 +3167,7 @@ void Application::showLoginScreen() { #endif } -static const QUrl AUTHORIZED_EXTERNAL_QML_SOURCE { "https://content.highfidelity.com/Experiences/Releases" }; +static const QUrl AUTHORIZED_EXTERNAL_QML_SOURCE { "https://kasenvr.github.io/community-apps/applications" }; void Application::initializeUi() { @@ -3188,12 +3188,18 @@ void Application::initializeUi() { // END PULL SAFEURLS FROM INTERFACE.JSON Settings bool isInWhitelist = false; // assume unsafe - for (const auto& str : safeURLS) { - if (!str.isEmpty() && str.endsWith(".qml") && url.toString().endsWith(".qml") && - url.toString().startsWith(str)) { - qCDebug(interfaceapp) << "Found matching url!" << url.host(); - isInWhitelist = true; - return true; + + if (AUTHORIZED_EXTERNAL_QML_SOURCE.isParentOf(url)) { + isInWhitelist = true; + return true; + } else { + for (const auto& str : safeURLS) { + if (!str.isEmpty() && str.endsWith(".qml") && url.toString().endsWith(".qml") && + url.toString().startsWith(str)) { + qCDebug(interfaceapp) << "Found matching url!" << url.host(); + isInWhitelist = true; + return true; + } } } From 420af951318945765267cc12012c573ea4559c41 Mon Sep 17 00:00:00 2001 From: HifiExperiments Date: Thu, 16 Apr 2020 16:18:39 -0700 Subject: [PATCH 031/160] models support flipped normals on double sided geometry --- .../entities-renderer/src/paintStroke.slf | 6 ++++-- libraries/graphics/src/graphics/Material.slh | 1 - libraries/render-utils/src/CullFace.slh | 20 +++++++++++++++++++ libraries/render-utils/src/model.slf | 5 +++-- libraries/render-utils/src/simple.slf | 9 +++++---- .../render-utils/src/simple_procedural.slf | 3 ++- 6 files changed, 34 insertions(+), 10 deletions(-) create mode 100644 libraries/render-utils/src/CullFace.slh diff --git a/libraries/entities-renderer/src/paintStroke.slf b/libraries/entities-renderer/src/paintStroke.slf index 3d5cc190d0..eb46be1e20 100644 --- a/libraries/entities-renderer/src/paintStroke.slf +++ b/libraries/entities-renderer/src/paintStroke.slf @@ -19,6 +19,8 @@ <@include paintStroke.slh@> <$declarePolyLineBuffers()$> +<@include CullFace.slh@> + LAYOUT(binding=0) uniform sampler2D _texture; <@if not HIFI_USE_FORWARD@> @@ -35,9 +37,9 @@ void main(void) { <@if not HIFI_USE_FORWARD@> <@if HIFI_USE_TRANSLUCENT@> - packDeferredFragmentTranslucent((2.0 * float(gl_FrontFacing) - 1.0) * _normalWS, texel.a, texel.rgb, DEFAULT_ROUGHNESS); + packDeferredFragmentTranslucent(evalFrontOrBackFaceNormal(_normalWS), texel.a, texel.rgb, DEFAULT_ROUGHNESS); <@else@> - packDeferredFragmentUnlit((2.0 * float(gl_FrontFacing) - 1.0) * _normalWS, texel.a, texel.rgb); + packDeferredFragmentUnlit(evalFrontOrBackFaceNormal(_normalWS), texel.a, texel.rgb); <@endif@> <@else@> _fragColor0 = texel; diff --git a/libraries/graphics/src/graphics/Material.slh b/libraries/graphics/src/graphics/Material.slh index 328ff4a3af..274dbc1cdd 100644 --- a/libraries/graphics/src/graphics/Material.slh +++ b/libraries/graphics/src/graphics/Material.slh @@ -13,7 +13,6 @@ <@include graphics/ShaderConstants.h@> - const int MAX_TEXCOORDS = 2; struct TexMapArray { diff --git a/libraries/render-utils/src/CullFace.slh b/libraries/render-utils/src/CullFace.slh new file mode 100644 index 0000000000..61b76bb22f --- /dev/null +++ b/libraries/render-utils/src/CullFace.slh @@ -0,0 +1,20 @@ + +<@if not CULL_FACE_SLH@> +<@def CULL_FACE_SLH@> + +// NOTE: this calculation happens once per fragment. this could be optimized by creating different shaders (via defines) +// for front, back, and double-sided. for front/back-only triangles, this will simplify to always 1 or always -1 +vec3 evalFrontOrBackFaceNormal(vec3 normal) { + return (2.0 * float(gl_FrontFacing) - 1.0) * normal; +} + +<@endif@> diff --git a/libraries/render-utils/src/model.slf b/libraries/render-utils/src/model.slf index a6cc82e335..98abc29d8c 100644 --- a/libraries/render-utils/src/model.slf +++ b/libraries/render-utils/src/model.slf @@ -13,6 +13,7 @@ <@include graphics/Material.slh@> <@include graphics/MaterialTextures.slh@> <@include render-utils/ShaderConstants.h@> +<@include CullFace.slh@> <@if not HIFI_USE_SHADOW@> <@if HIFI_USE_FORWARD or HIFI_USE_TRANSLUCENT@> @@ -129,7 +130,7 @@ void main(void) { _fragColor0 = vec4(albedo * isUnlitEnabled(), opacity); <@else@> packDeferredFragmentUnlit( - normalize(_normalWS), + evalFrontOrBackFaceNormal(normalize(_normalWS)), opacity, albedo * isUnlitEnabled()); <@endif@> @@ -195,7 +196,7 @@ void main(void) { <@else@> vec3 fragNormalWS = _normalWS; <@endif@> - fragNormalWS = normalize(fragNormalWS); + fragNormalWS = evalFrontOrBackFaceNormal(normalize(fragNormalWS)); <@if HIFI_USE_FORWARD@> TransformCamera cam = getTransformCamera(); diff --git a/libraries/render-utils/src/simple.slf b/libraries/render-utils/src/simple.slf index 9760216682..fabe85cb4f 100644 --- a/libraries/render-utils/src/simple.slf +++ b/libraries/render-utils/src/simple.slf @@ -13,6 +13,7 @@ <@include gpu/Color.slh@> <@include DefaultMaterials.slh@> <@include render-utils/ShaderConstants.h@> +<@include CullFace.slh@> <@if HIFI_USE_FORWARD or HIFI_USE_TRANSLUCENT@> <@if not HIFI_USE_UNLIT@> @@ -94,7 +95,7 @@ void main(void) { 1.0, DEFAULT_OCCLUSION, fragPosition, - normalize(_normalWS) * (2.0 * float(gl_FrontFacing) - 1.0), + evalFrontOrBackFaceNormal(normalize(_normalWS)), texel.rgb, fresnel, metallic, @@ -111,7 +112,7 @@ void main(void) { 1.0, DEFAULT_OCCLUSION, fragPosition, - normalize(_normalWS) * (2.0 * float(gl_FrontFacing) - 1.0), + evalFrontOrBackFaceNormal(normalize(_normalWS)), texel.rgb, fresnel, metallic, @@ -119,7 +120,7 @@ void main(void) { texel.a); <@else@> packDeferredFragment( - normalize(_normalWS) * (2.0 * float(gl_FrontFacing) - 1.0), + evalFrontOrBackFaceNormal(normalize(_normalWS)), 1.0, texel.rgb, DEFAULT_ROUGHNESS, @@ -141,7 +142,7 @@ void main(void) { , texel.a); <@else@> packDeferredFragmentUnlit( - normalize(_normalWS) * (2.0 * float(gl_FrontFacing) - 1.0), + evalFrontOrBackFaceNormal(normalize(_normalWS)), 1.0, texel.rgb <@if HIFI_USE_FADE@> diff --git a/libraries/render-utils/src/simple_procedural.slf b/libraries/render-utils/src/simple_procedural.slf index 5b0eb62cca..cc8edbb415 100644 --- a/libraries/render-utils/src/simple_procedural.slf +++ b/libraries/render-utils/src/simple_procedural.slf @@ -24,6 +24,7 @@ <@include gpu/Transform.slh@> <$declareStandardCameraTransform()$> +<@include CullFace.slh@> <@include render-utils/ShaderConstants.h@> layout(location=RENDER_UTILS_ATTR_POSITION_MS) in vec4 _positionMS; @@ -66,7 +67,7 @@ float getProceduralFragmentWithPosition(inout ProceduralFragmentWithPosition pro #line 2030 void main(void) { - vec3 normal = normalize(_normalWS.xyz) * (2.0 * float(gl_FrontFacing) - 1.0); + vec3 normal = evalFrontOrBackFaceNormal(normalize(_normalWS.xyz)); vec3 diffuse = _color.rgb; vec3 fresnel = DEFAULT_FRESNEL; float roughness = DEFAULT_ROUGHNESS; From 997eb14ddcc25e2975e289b441fc4ad421e6d9a5 Mon Sep 17 00:00:00 2001 From: Thijs Wenker Date: Fri, 7 Feb 2020 19:37:00 +0100 Subject: [PATCH 032/160] release mode proof portfiles --- cmake/ports/polyvox/portfile.cmake | 48 +++++++++++++++++++----------- cmake/ports/vhacd/portfile.cmake | 17 +++++++---- 2 files changed, 42 insertions(+), 23 deletions(-) diff --git a/cmake/ports/polyvox/portfile.cmake b/cmake/ports/polyvox/portfile.cmake index 54cc74d4dd..275a1a940f 100644 --- a/cmake/ports/polyvox/portfile.cmake +++ b/cmake/ports/polyvox/portfile.cmake @@ -23,33 +23,45 @@ vcpkg_install_cmake() file(INSTALL ${SOURCE_PATH}/LICENSE.TXT DESTINATION ${CURRENT_PACKAGES_DIR}/share/polyvox RENAME copyright) file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/include) -file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/lib) -file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/debug/lib) +if (NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release") + file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/lib) +endif() +if (NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug") + file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/debug/lib) +endif() if(WIN32) - file(RENAME ${CURRENT_PACKAGES_DIR}/PolyVoxCore/lib/Release/PolyVoxCore.lib ${CURRENT_PACKAGES_DIR}/lib/PolyVoxCore.lib) - file(RENAME ${CURRENT_PACKAGES_DIR}/debug/PolyVoxCore/lib/Debug/PolyVoxCore.lib ${CURRENT_PACKAGES_DIR}/debug/lib/PolyVoxCore.lib) - file(RENAME ${CURRENT_PACKAGES_DIR}/PolyVoxUtil/lib/PolyVoxUtil.lib ${CURRENT_PACKAGES_DIR}/lib/PolyVoxUtil.lib) - file(RENAME ${CURRENT_PACKAGES_DIR}/debug/PolyVoxUtil/lib/PolyVoxUtil.lib ${CURRENT_PACKAGES_DIR}/debug/lib/PolyVoxUtil.lib) + if (NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release") + file(RENAME ${CURRENT_PACKAGES_DIR}/PolyVoxCore/lib/Release/PolyVoxCore.lib ${CURRENT_PACKAGES_DIR}/lib/PolyVoxCore.lib) + file(RENAME ${CURRENT_PACKAGES_DIR}/PolyVoxUtil/lib/PolyVoxUtil.lib ${CURRENT_PACKAGES_DIR}/lib/PolyVoxUtil.lib) + endif() + if (NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug") + file(RENAME ${CURRENT_PACKAGES_DIR}/debug/PolyVoxCore/lib/Debug/PolyVoxCore.lib ${CURRENT_PACKAGES_DIR}/debug/lib/PolyVoxCore.lib) + file(RENAME ${CURRENT_PACKAGES_DIR}/debug/PolyVoxUtil/lib/PolyVoxUtil.lib ${CURRENT_PACKAGES_DIR}/debug/lib/PolyVoxUtil.lib) + endif() file(RENAME ${CURRENT_PACKAGES_DIR}/PolyVoxCore/include/PolyVoxCore ${CURRENT_PACKAGES_DIR}/include/PolyVoxCore) file(RENAME ${CURRENT_PACKAGES_DIR}/PolyVoxUtil/include/PolyVoxUtil ${CURRENT_PACKAGES_DIR}/include/PolyVoxUtil) file(RENAME ${CURRENT_PACKAGES_DIR}/cmake/PolyVoxConfig.cmake ${CURRENT_PACKAGES_DIR}/share/polyvox/polyvoxConfig.cmake) file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/cmake) - file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/cmake) file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/PolyVoxCore) file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/PolyVoxUtil) - file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/PolyVoxUtil) + file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/cmake) file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/PolyVoxCore) + file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/PolyVoxUtil) else() - file(GLOB LIBS ${CURRENT_PACKAGES_DIR}/lib/Release/*) - foreach(_lib ${LIBS}) - file(RELATIVE_PATH _libName ${CURRENT_PACKAGES_DIR}/lib/Release ${_lib}) - file(RENAME ${_lib} ${CURRENT_PACKAGES_DIR}/lib/${_libName}) - endforeach() - file(GLOB LIBS ${CURRENT_PACKAGES_DIR}/debug/lib/Debug/*) - foreach(_lib ${LIBS}) - file(RELATIVE_PATH _libName ${CURRENT_PACKAGES_DIR}/debug/lib/Debug ${_lib}) - file(RENAME ${_lib} ${CURRENT_PACKAGES_DIR}/debug/lib/${_libName}) - endforeach() + if (NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release") + file(GLOB LIBS ${CURRENT_PACKAGES_DIR}/lib/Release/*) + foreach(_lib ${LIBS}) + file(RELATIVE_PATH _libName ${CURRENT_PACKAGES_DIR}/lib/Release ${_lib}) + file(RENAME ${_lib} ${CURRENT_PACKAGES_DIR}/lib/${_libName}) + endforeach() + endif() + if (NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug") + file(GLOB LIBS ${CURRENT_PACKAGES_DIR}/debug/lib/Debug/*) + foreach(_lib ${LIBS}) + file(RELATIVE_PATH _libName ${CURRENT_PACKAGES_DIR}/debug/lib/Debug ${_lib}) + file(RENAME ${_lib} ${CURRENT_PACKAGES_DIR}/debug/lib/${_libName}) + endforeach() + endif() file(RENAME ${CURRENT_PACKAGES_DIR}/include/PolyVoxCore ${CURRENT_PACKAGES_DIR}/include/PolyVoxCore.temp) file(RENAME ${CURRENT_PACKAGES_DIR}/include/PolyVoxCore.temp/PolyVoxCore ${CURRENT_PACKAGES_DIR}/include/PolyVoxCore) file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/include/PolyVoxCore.temp) diff --git a/cmake/ports/vhacd/portfile.cmake b/cmake/ports/vhacd/portfile.cmake index 02d90cab18..3a13e461a6 100644 --- a/cmake/ports/vhacd/portfile.cmake +++ b/cmake/ports/vhacd/portfile.cmake @@ -22,10 +22,17 @@ vcpkg_configure_cmake( vcpkg_install_cmake() file(COPY ${CMAKE_CURRENT_LIST_DIR}/copyright DESTINATION ${CURRENT_PACKAGES_DIR}/share/vhacd) -file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include) +if (NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug") + file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include) +endif() + if (WIN32) - file(RENAME ${CURRENT_PACKAGES_DIR}/lib/Release/VHACD_LIB.lib ${CURRENT_PACKAGES_DIR}/lib/VHACD.lib) - file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/lib/Release) - file(RENAME ${CURRENT_PACKAGES_DIR}/debug/lib/Debug/VHACD_LIB.lib ${CURRENT_PACKAGES_DIR}/debug/lib/VHACD.lib) - file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/lib/Debug) + if (NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release") + file(RENAME ${CURRENT_PACKAGES_DIR}/lib/Release/VHACD_LIB.lib ${CURRENT_PACKAGES_DIR}/lib/VHACD.lib) + file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/lib/Release) + endif() + if (NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug") + file(RENAME ${CURRENT_PACKAGES_DIR}/debug/lib/Debug/VHACD_LIB.lib ${CURRENT_PACKAGES_DIR}/debug/lib/VHACD.lib) + file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/lib/Debug) + endif() endif() \ No newline at end of file From 48ee437c00e640849e69da3ddf1608cbde37e48d Mon Sep 17 00:00:00 2001 From: Thijs Wenker Date: Sat, 8 Feb 2020 15:43:39 +0100 Subject: [PATCH 033/160] cmake -D VCPKG_BUILD_TYPE could be set to either release debug or release in order to build vcpkg in a specific build type, otherwise it will build with debug and release --- .github/workflows/pr_build.yml | 4 +- CMakeLists.txt | 6 ++- cmake/macros/TargetDraco.cmake | 3 +- cmake/macros/TargetOpenEXR.cmake | 2 + cmake/ports/quazip/portfile.cmake | 12 ++++-- hifi_vcpkg.py | 62 ++++++++++++++++++++++++++----- prebuild.py | 8 ++++ 7 files changed, 79 insertions(+), 18 deletions(-) diff --git a/.github/workflows/pr_build.yml b/.github/workflows/pr_build.yml index d1ecb1bb02..2d603ea6f4 100644 --- a/.github/workflows/pr_build.yml +++ b/.github/workflows/pr_build.yml @@ -79,7 +79,7 @@ jobs: - name: Configure CMake working-directory: ${{runner.workspace}}/build shell: bash - run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE $CMAKE_EXTRA + run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DVCPKG_BUILD_TYPE=release $CMAKE_EXTRA - name: Build Application working-directory: ${{runner.workspace}}/build shell: bash @@ -126,7 +126,7 @@ jobs: - name: Configure CMake working-directory: ${{runner.workspace}}/build shell: bash - run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DBUILD_TOOLS:BOOLEAN=FALSE + run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DVCPKG_BUILD_TYPE=release -DBUILD_TOOLS:BOOLEAN=FALSE - name: shell: bash working-directory: ${{runner.workspace}}/build diff --git a/CMakeLists.txt b/CMakeLists.txt index 4bf7b8bc56..ecbfd2eed9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -67,8 +67,12 @@ if (HIFI_ANDROID) WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} ) else() + set(VCPKG_BUILD_TYPE_PARAM "") + if (VCPKG_BUILD_TYPE) + set(VCPKG_BUILD_TYPE_PARAM --vcpkg-build-type ${VCPKG_BUILD_TYPE}) + endif() execute_process( - COMMAND ${HIFI_PYTHON_EXEC} ${CMAKE_CURRENT_SOURCE_DIR}/prebuild.py --release-type ${RELEASE_TYPE} --build-root ${CMAKE_BINARY_DIR} + COMMAND ${HIFI_PYTHON_EXEC} ${CMAKE_CURRENT_SOURCE_DIR}/prebuild.py --release-type ${RELEASE_TYPE} --build-root ${CMAKE_BINARY_DIR} ${VCPKG_BUILD_TYPE_PARAM} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} ) # squelch the Policy CMP0074 warning without requiring an update to cmake 3.12. diff --git a/cmake/macros/TargetDraco.cmake b/cmake/macros/TargetDraco.cmake index 520786d4c3..e23069d1d3 100755 --- a/cmake/macros/TargetDraco.cmake +++ b/cmake/macros/TargetDraco.cmake @@ -1,6 +1,5 @@ macro(TARGET_DRACO) set(LIBS draco dracodec dracoenc) - find_library(LIBPATH ${LIB} PATHS ) if (ANDROID) set(INSTALL_DIR ${HIFI_ANDROID_PRECOMPILED}/draco) set(DRACO_INCLUDE_DIRS "${INSTALL_DIR}/include" CACHE STRING INTERNAL) @@ -12,6 +11,8 @@ macro(TARGET_DRACO) else() set(LIB_SEARCH_PATH_RELEASE ${VCPKG_INSTALL_ROOT}/lib/) set(LIB_SEARCH_PATH_DEBUG ${VCPKG_INSTALL_ROOT}/debug/lib/) + set(DRACO_LIBRARY_RELEASE "") + set(DRACO_LIBRARY_DEBUG "") foreach(LIB ${LIBS}) find_library(${LIB}_LIBPATH ${LIB} PATHS ${LIB_SEARCH_PATH_RELEASE} NO_DEFAULT_PATH) list(APPEND DRACO_LIBRARY_RELEASE ${${LIB}_LIBPATH}) diff --git a/cmake/macros/TargetOpenEXR.cmake b/cmake/macros/TargetOpenEXR.cmake index 8d61f216e7..9d63ba3ef4 100644 --- a/cmake/macros/TargetOpenEXR.cmake +++ b/cmake/macros/TargetOpenEXR.cmake @@ -28,6 +28,8 @@ macro(TARGET_OPENEXR) string(REGEX MATCHALL "[0-9]" OPENEXR_MINOR_VERSION ${TMP}) endif() + set(OPENEXR_LIBRARY_RELEASE "") + set(OPENEXR_LIBRARY_DEBUG "") foreach(OPENEXR_LIB IlmImf IlmImfUtil diff --git a/cmake/ports/quazip/portfile.cmake b/cmake/ports/quazip/portfile.cmake index 07a8ebc3c3..7ff2d07173 100644 --- a/cmake/ports/quazip/portfile.cmake +++ b/cmake/ports/quazip/portfile.cmake @@ -24,10 +24,14 @@ vcpkg_configure_cmake( vcpkg_install_cmake() if (WIN32) - file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/bin) - file(RENAME ${CURRENT_PACKAGES_DIR}/lib/quazip5.dll ${CURRENT_PACKAGES_DIR}/bin/quazip5.dll) - file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/debug/bin) - file(RENAME ${CURRENT_PACKAGES_DIR}/debug/lib/quazip5d.dll ${CURRENT_PACKAGES_DIR}/debug/bin/quazip5.dll) + if (NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release") + file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/bin) + file(RENAME ${CURRENT_PACKAGES_DIR}/lib/quazip5.dll ${CURRENT_PACKAGES_DIR}/bin/quazip5.dll) + endif() + if (NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug") + file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/debug/bin) + file(RENAME ${CURRENT_PACKAGES_DIR}/debug/lib/quazip5d.dll ${CURRENT_PACKAGES_DIR}/debug/bin/quazip5.dll) + endif() elseif(DEFINED VCPKG_TARGET_IS_LINUX) # We only want static libs. file(GLOB QUAZIP5_DYNAMIC_LIBS ${CURRENT_PACKAGES_DIR}/lib/libquazip5.so* ${CURRENT_PACKAGES_DIR}/debug/lib/libquazip5d.so*) diff --git a/hifi_vcpkg.py b/hifi_vcpkg.py index 9846d386c4..8aa928f8fe 100644 --- a/hifi_vcpkg.py +++ b/hifi_vcpkg.py @@ -21,6 +21,7 @@ get_filename_component(CMAKE_TOOLCHAIN_FILE "{}" ABSOLUTE CACHE) get_filename_component(CMAKE_TOOLCHAIN_FILE_UNCACHED "{}" ABSOLUTE) set(VCPKG_INSTALL_ROOT "{}") set(VCPKG_TOOLS_DIR "{}") +set(VCPKG_TARGET_TRIPLET "{}") """ CMAKE_TEMPLATE_NON_ANDROID = """ @@ -34,7 +35,11 @@ endif() self.args = args # our custom ports, relative to the script location self.sourcePortsPath = args.ports_path - self.id = hifi_utils.hashFolder(self.sourcePortsPath)[:8] + self.vcpkgBuildType = args.vcpkg_build_type + if (self.vcpkgBuildType): + self.id = hifi_utils.hashFolder(self.sourcePortsPath)[:8] + "-" + self.vcpkgBuildType + else: + self.id = hifi_utils.hashFolder(self.sourcePortsPath)[:8] self.configFilePath = os.path.join(args.build_root, 'vcpkg.cmake') self.assets_url = self.readVar('EXTERNAL_BUILD_ASSETS') @@ -82,15 +87,15 @@ endif() if 'Windows' == system: self.exe = os.path.join(self.path, 'vcpkg.exe') - self.bootstrapCmds = [ os.path.join(self.path, 'bootstrap-vcpkg.bat') ] + self.bootstrapCmds = [ os.path.join(self.path, 'bootstrap-vcpkg.bat'), '-disableMetrics' ] self.vcpkgUrl = self.assets_url + '/dependencies/vcpkg/builds/vcpkg-win32-client.zip%3FversionId=tSFzbw01VkkVFeRQ6YuAY4dro2HxJR9U' self.vcpkgHash = 'a650db47a63ccdc9904b68ddd16af74772e7e78170b513ea8de5a3b47d032751a3b73dcc7526d88bcb500753ea3dd9880639ca842bb176e2bddb1710f9a58cd3' self.hostTriplet = 'x64-windows' if usePrebuilt: - self.prebuiltArchive = self.assets_url + "/dependencies/vcpkg/builds/vcpkg-win32.zip%3FversionId=3SF3mDC8dkQH1JP041m88xnYmWNzZflx" + self.prebuiltArchive = "https://ipfs.io/ipfs/QmcBggttJQb1vYeyz29FXfaxnJ5c1HfZW72xNQepnENude/vcpkg-win32-a2623c6a-release.zip" elif 'Darwin' == system: self.exe = os.path.join(self.path, 'vcpkg') - self.bootstrapCmds = [ os.path.join(self.path, 'bootstrap-vcpkg.sh'), '--allowAppleClang' ] + self.bootstrapCmds = [ os.path.join(self.path, 'bootstrap-vcpkg.sh'), '--allowAppleClang', '-disableMetrics' ] self.vcpkgUrl = self.assets_url + '/dependencies/vcpkg/builds/vcpkg-osx-client.tgz%3FversionId=j0b4azo_zTlH_Q9DElEWOz1UMYZ2nqQw' self.vcpkgHash = '519d666d02ef22b87c793f016ca412e70f92e1d55953c8f9bd4ee40f6d9f78c1df01a6ee293907718f3bbf24075cc35492fb216326dfc50712a95858e9cbcb4d' self.hostTriplet = 'x64-osx' @@ -98,7 +103,7 @@ endif() self.prebuiltArchive = self.assets_url + "/dependencies/vcpkg/builds/vcpkg-osx.tgz%3FversionId=6JrIMTdvpBF3MAsjA92BMkO79Psjzs6Z" else: self.exe = os.path.join(self.path, 'vcpkg') - self.bootstrapCmds = [ os.path.join(self.path, 'bootstrap-vcpkg.sh') ] + self.bootstrapCmds = [ os.path.join(self.path, 'bootstrap-vcpkg.sh'), '-disableMetrics' ] self.vcpkgUrl = self.assets_url + '/dependencies/vcpkg/builds/vcpkg-linux-client.tgz%3FversionId=y7mct0gFicEXz5hJy3KROBugcLR56YWf' self.vcpkgHash = '6a1ce47ef6621e699a4627e8821ad32528c82fce62a6939d35b205da2d299aaa405b5f392df4a9e5343dd6a296516e341105fbb2dd8b48864781d129d7fba10d' self.hostTriplet = 'x64-linux' @@ -206,6 +211,19 @@ endif() print(actualCommands) hifi_utils.executeSubprocess(actualCommands, folder=self.path, env=self.buildEnv) + def copyTripletForBuildType(self, triplet): + print('Copying triplet ' + triplet + ' to have build type ' + self.vcpkgBuildType) + tripletPath = os.path.join(self.path, 'triplets', triplet + '.cmake') + tripletForBuildTypePath = os.path.join(self.path, 'triplets', self.getTripletWithBuildType(triplet) + '.cmake') + shutil.copy(tripletPath, tripletForBuildTypePath) + with open(tripletForBuildTypePath, "a") as tripletForBuildTypeFile: + tripletForBuildTypeFile.write("set(VCPKG_BUILD_TYPE " + self.vcpkgBuildType + ")\n") + + def getTripletWithBuildType(self, triplet): + if (not self.vcpkgBuildType): + return triplet + return triplet + '-' + self.vcpkgBuildType + def setupDependencies(self, qt=None): if self.prebuiltArchive: if not os.path.isfile(self.prebuildTagFile): @@ -224,12 +242,16 @@ endif() self.setupAndroidDependencies() print("Installing host tools") - self.run(['install', '--triplet', self.hostTriplet, 'hifi-host-tools']) + if (self.vcpkgBuildType): + self.copyTripletForBuildType(self.hostTriplet) + self.run(['install', '--triplet', self.getTripletWithBuildType(self.hostTriplet), 'hifi-host-tools']) # If not android, install the hifi-client-deps libraries if not self.args.android: print("Installing build dependencies") - self.run(['install', '--triplet', self.triplet, 'hifi-client-deps']) + if (self.vcpkgBuildType): + self.copyTripletForBuildType(self.triplet) + self.run(['install', '--triplet', self.getTripletWithBuildType(self.triplet), 'hifi-client-deps']) def cleanBuilds(self): if self.noClean: @@ -276,12 +298,32 @@ endif() with open(self.prebuildTagFile, 'w') as f: f.write(self.tagContents) + def fixupCmakeScript(self): + cmakeScript = os.path.join(self.path, 'scripts/buildsystems/vcpkg.cmake') + newCmakeScript = cmakeScript + '.new' + isFileChanged = False + removalPrefix = "set(VCPKG_TARGET_TRIPLET " + # Open original file in read only mode and dummy file in write mode + with open(cmakeScript, 'r') as read_obj, open(newCmakeScript, 'w') as write_obj: + # Line by line copy data from original file to dummy file + for line in read_obj: + if not line.startswith(removalPrefix): + write_obj.write(line) + else: + isFileChanged = True + + if isFileChanged: + shutil.move(newCmakeScript, cmakeScript) + else: + os.remove(newCmakeScript) + + def writeConfig(self): print("Writing cmake config to {}".format(self.configFilePath)) # Write out the configuration for use by CMake cmakeScript = os.path.join(self.path, 'scripts/buildsystems/vcpkg.cmake') - installPath = os.path.join(self.path, 'installed', self.triplet) - toolsPath = os.path.join(self.path, 'installed', self.hostTriplet, 'tools') + installPath = os.path.join(self.path, 'installed', self.getTripletWithBuildType(self.triplet)) + toolsPath = os.path.join(self.path, 'installed', self.getTripletWithBuildType(self.hostTriplet), 'tools') cmakeTemplate = VcpkgRepo.CMAKE_TEMPLATE if self.args.android: @@ -289,7 +331,7 @@ endif() cmakeTemplate += 'set(HIFI_ANDROID_PRECOMPILED "{}")\n'.format(precompiled) else: cmakeTemplate += VcpkgRepo.CMAKE_TEMPLATE_NON_ANDROID - cmakeConfig = cmakeTemplate.format(cmakeScript, cmakeScript, installPath, toolsPath).replace('\\', '/') + cmakeConfig = cmakeTemplate.format(cmakeScript, cmakeScript, installPath, toolsPath, self.getTripletWithBuildType(self.hostTriplet)).replace('\\', '/') with open(self.configFilePath, 'w') as f: f.write(cmakeConfig) diff --git a/prebuild.py b/prebuild.py index 03677f21d7..66c74630e7 100644 --- a/prebuild.py +++ b/prebuild.py @@ -94,6 +94,7 @@ def parse_args(): parser.add_argument('--force-build', action='store_true') parser.add_argument('--release-type', type=str, default="DEV", help="DEV, PR, or PRODUCTION") parser.add_argument('--vcpkg-root', type=str, help='The location of the vcpkg distribution') + parser.add_argument('--vcpkg-build-type', type=str, help='Could be `release` or `debug`. By default it doesn`t set the build-type') parser.add_argument('--build-root', required=True, type=str, help='The location of the cmake build') parser.add_argument('--ports-path', type=str, default=defaultPortsPath) parser.add_argument('--ci-build', action='store_true', default=os.getenv('CI_BUILD') is not None) @@ -142,6 +143,10 @@ def main(): pm.writeVar('QT_CMAKE_PREFIX_PATH', qtInstallPath) # Only allow one instance of the program to run at a time + + if qtInstallPath != '': + pm.writeVar('QT_CMAKE_PREFIX_PATH', qtInstallPath) + with hifi_singleton.Singleton(pm.lockFile) as lock: with timer('Bootstraping'): @@ -175,6 +180,9 @@ def main(): qtPath = os.path.join(pm.androidPackagePath, 'qt') hifi_android.QtPackager(appPath, qtPath).bundle() + # Fixup the vcpkg cmake to not reset VCPKG_TARGET_TRIPLET + pm.fixupCmakeScript() + # Write the vcpkg config to the build directory last with timer('Writing configuration'): pm.writeConfig() From 98e79fd698c5e95b894616283d70a03ae9851513 Mon Sep 17 00:00:00 2001 From: Thijs Wenker Date: Thu, 13 Feb 2020 19:27:59 +0100 Subject: [PATCH 034/160] update zlib port --- cmake/ports/zlib/CONTROL | 2 +- .../cmake_dont_build_more_than_needed.patch | 58 ++++++++++++++----- 2 files changed, 46 insertions(+), 14 deletions(-) diff --git a/cmake/ports/zlib/CONTROL b/cmake/ports/zlib/CONTROL index aa7c7b6e92..601fb1bc0e 100644 --- a/cmake/ports/zlib/CONTROL +++ b/cmake/ports/zlib/CONTROL @@ -1,4 +1,4 @@ Source: zlib -Version: 1.2.11-5 +Version: 1.2.11-6 Homepage: https://www.zlib.net/ Description: A compression library diff --git a/cmake/ports/zlib/cmake_dont_build_more_than_needed.patch b/cmake/ports/zlib/cmake_dont_build_more_than_needed.patch index 229a2d055b..a374f76d62 100644 --- a/cmake/ports/zlib/cmake_dont_build_more_than_needed.patch +++ b/cmake/ports/zlib/cmake_dont_build_more_than_needed.patch @@ -1,5 +1,5 @@ diff --git a/CMakeLists.txt b/CMakeLists.txt -index 0fe939d..8d2f5f1 100644 +index 0fe939d..a1291d5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,6 +7,7 @@ set(VERSION "1.2.11") @@ -10,24 +10,56 @@ index 0fe939d..8d2f5f1 100644 set(INSTALL_BIN_DIR "${CMAKE_INSTALL_PREFIX}/bin" CACHE PATH "Installation directory for executables") set(INSTALL_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib" CACHE PATH "Installation directory for libraries") -@@ -211,7 +212,15 @@ elseif(BUILD_SHARED_LIBS AND WIN32) +@@ -124,9 +125,11 @@ set(ZLIB_SRCS + ) + + if(NOT MINGW) +- set(ZLIB_DLL_SRCS +- win32/zlib1.rc # If present will override custom build rule below. +- ) ++ if(BUILD_SHARED_LIBS) ++ set(ZLIB_DLL_SRCS ++ win32/zlib1.rc # If present will override custom build rule below. ++ ) ++ endif() + endif() + + if(CMAKE_COMPILER_IS_GNUCC) +@@ -180,11 +183,12 @@ if(MINGW) + -I ${CMAKE_CURRENT_BINARY_DIR} + -o ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj + -i ${CMAKE_CURRENT_SOURCE_DIR}/win32/zlib1.rc) +- set(ZLIB_DLL_SRCS ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj) ++ if(BUILD_SHARED_LIBS) ++ set(ZLIB_DLL_SRCS ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj) ++ endif() + endif(MINGW) + +-add_library(zlib SHARED ${ZLIB_SRCS} ${ZLIB_ASMS} ${ZLIB_DLL_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS}) +-add_library(zlibstatic STATIC ${ZLIB_SRCS} ${ZLIB_ASMS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS}) ++add_library(zlib ${ZLIB_SRCS} ${ZLIB_ASMS} ${ZLIB_DLL_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS}) + set_target_properties(zlib PROPERTIES DEFINE_SYMBOL ZLIB_DLL) + set_target_properties(zlib PROPERTIES SOVERSION 1) + +@@ -201,7 +205,7 @@ endif() + + if(UNIX) + # On unix-like platforms the library is almost always called libz +- set_target_properties(zlib zlibstatic PROPERTIES OUTPUT_NAME z) ++ set_target_properties(zlib PROPERTIES OUTPUT_NAME z) + if(NOT APPLE) + set_target_properties(zlib PROPERTIES LINK_FLAGS "-Wl,--version-script,\"${CMAKE_CURRENT_SOURCE_DIR}/zlib.map\"") + endif() +@@ -211,7 +215,7 @@ elseif(BUILD_SHARED_LIBS AND WIN32) endif() if(NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL ) - install(TARGETS zlib zlibstatic -+ if (BUILD_SHARED_LIBS) -+ set(ZLIB_TARGETS zlib) -+ set_target_properties(zlibstatic PROPERTIES EXCLUDE_FROM_ALL ON) -+ else() -+ set(ZLIB_TARGETS zlibstatic) -+ set_target_properties(zlib PROPERTIES EXCLUDE_FROM_ALL ON) -+ endif() -+ -+ install(TARGETS ${ZLIB_TARGETS} ++ install(TARGETS zlib RUNTIME DESTINATION "${INSTALL_BIN_DIR}" ARCHIVE DESTINATION "${INSTALL_LIB_DIR}" LIBRARY DESTINATION "${INSTALL_LIB_DIR}" ) -@@ -230,6 +239,7 @@ endif() +@@ -230,6 +234,7 @@ endif() # Example binaries #============================================================================ @@ -35,7 +67,7 @@ index 0fe939d..8d2f5f1 100644 add_executable(example test/example.c) target_link_libraries(example zlib) add_test(example example) -@@ -247,3 +257,4 @@ if(HAVE_OFF64_T) +@@ -247,3 +252,4 @@ if(HAVE_OFF64_T) target_link_libraries(minigzip64 zlib) set_target_properties(minigzip64 PROPERTIES COMPILE_FLAGS "-D_FILE_OFFSET_BITS=64") endif() From 3ea3330beaf8fce6ed258fc8c6d2baa3bb5b43a9 Mon Sep 17 00:00:00 2001 From: Thijs Wenker Date: Thu, 13 Feb 2020 20:11:14 +0100 Subject: [PATCH 035/160] enable tbb for osx --- cmake/ports/hifi-deps/CONTROL | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/ports/hifi-deps/CONTROL b/cmake/ports/hifi-deps/CONTROL index d4b4acd4c5..ff689c7a2a 100644 --- a/cmake/ports/hifi-deps/CONTROL +++ b/cmake/ports/hifi-deps/CONTROL @@ -1,4 +1,4 @@ Source: hifi-deps -Version: 0.1.4-github-actions +Version: 0.1.5-github-actions Description: Collected dependencies for High Fidelity applications Build-Depends: bullet3, draco, etc2comp, glad, glm, nvtt, openexr (!android), openssl (windows), opus, polyvox, tbb (!android), vhacd, webrtc (!android), zlib From 0c8359816cefd39809a9d3a4e850830df4f8cffa Mon Sep 17 00:00:00 2001 From: Thijs Wenker Date: Sat, 15 Feb 2020 17:03:18 +0100 Subject: [PATCH 036/160] - make vcpkg output smaller by removing downloads and packages folders - only build the full version of the clients for now (server+client) - disable using a predefined vcpkg for CI builds for now. - --- hifi_vcpkg.py | 14 ++++++++++---- prebuild.py | 5 ++++- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/hifi_vcpkg.py b/hifi_vcpkg.py index 8aa928f8fe..03ed303022 100644 --- a/hifi_vcpkg.py +++ b/hifi_vcpkg.py @@ -91,16 +91,16 @@ endif() self.vcpkgUrl = self.assets_url + '/dependencies/vcpkg/builds/vcpkg-win32-client.zip%3FversionId=tSFzbw01VkkVFeRQ6YuAY4dro2HxJR9U' self.vcpkgHash = 'a650db47a63ccdc9904b68ddd16af74772e7e78170b513ea8de5a3b47d032751a3b73dcc7526d88bcb500753ea3dd9880639ca842bb176e2bddb1710f9a58cd3' self.hostTriplet = 'x64-windows' - if usePrebuilt: - self.prebuiltArchive = "https://ipfs.io/ipfs/QmcBggttJQb1vYeyz29FXfaxnJ5c1HfZW72xNQepnENude/vcpkg-win32-a2623c6a-release.zip" + #if usePrebuilt: + # self.prebuiltArchive = "https://ipfs.io/ipfs/QmcBggttJQb1vYeyz29FXfaxnJ5c1HfZW72xNQepnENude/vcpkg-win32-a2623c6a-release.zip" elif 'Darwin' == system: self.exe = os.path.join(self.path, 'vcpkg') self.bootstrapCmds = [ os.path.join(self.path, 'bootstrap-vcpkg.sh'), '--allowAppleClang', '-disableMetrics' ] self.vcpkgUrl = self.assets_url + '/dependencies/vcpkg/builds/vcpkg-osx-client.tgz%3FversionId=j0b4azo_zTlH_Q9DElEWOz1UMYZ2nqQw' self.vcpkgHash = '519d666d02ef22b87c793f016ca412e70f92e1d55953c8f9bd4ee40f6d9f78c1df01a6ee293907718f3bbf24075cc35492fb216326dfc50712a95858e9cbcb4d' self.hostTriplet = 'x64-osx' - if usePrebuilt: - self.prebuiltArchive = self.assets_url + "/dependencies/vcpkg/builds/vcpkg-osx.tgz%3FversionId=6JrIMTdvpBF3MAsjA92BMkO79Psjzs6Z" + #if usePrebuilt: + # self.prebuiltArchive = self.assets_url + "/dependencies/vcpkg/builds/vcpkg-osx.tgz%3FversionId=6JrIMTdvpBF3MAsjA92BMkO79Psjzs6Z" else: self.exe = os.path.join(self.path, 'vcpkg') self.bootstrapCmds = [ os.path.join(self.path, 'bootstrap-vcpkg.sh'), '-disableMetrics' ] @@ -262,6 +262,12 @@ endif() print("Wiping build trees") shutil.rmtree(builddir, ignore_errors=True) + # Removes large files used to build the vcpkg, for CI purposes. + def cleanupDevelopmentFiles(self): + shutil.rmtree(os.path.join(self.path, "downloads"), ignore_errors=True) + shutil.rmtree(os.path.join(self.path, "packages"), ignore_errors=True) + + def setupAndroidDependencies(self): # vcpkg prebuilt if not os.path.isdir(os.path.join(self.path, 'installed', 'arm64-android')): diff --git a/prebuild.py b/prebuild.py index 66c74630e7..b15c83e4fe 100644 --- a/prebuild.py +++ b/prebuild.py @@ -165,7 +165,7 @@ def main(): pm.setupDependencies(qt=qtInstallPath) # wipe out the build directories (after writing the tag, since failure - # here shouldn't invalidte the vcpkg install) + # here shouldn't invalidate the vcpkg install) with timer('Cleaning builds'): pm.cleanBuilds() @@ -183,6 +183,9 @@ def main(): # Fixup the vcpkg cmake to not reset VCPKG_TARGET_TRIPLET pm.fixupCmakeScript() + # Cleanup downloads and packages folders in vcpkg to make it smaller for CI + pm.cleanupDevelopmentFiles() + # Write the vcpkg config to the build directory last with timer('Writing configuration'): pm.writeConfig() From ba7f7406250f5a30607506ad2b249194553c4684 Mon Sep 17 00:00:00 2001 From: Thijs Wenker Date: Sat, 15 Feb 2020 17:17:41 +0100 Subject: [PATCH 037/160] try fix osx vcpkg build --- hifi_vcpkg.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hifi_vcpkg.py b/hifi_vcpkg.py index 03ed303022..4d347a289a 100644 --- a/hifi_vcpkg.py +++ b/hifi_vcpkg.py @@ -99,6 +99,8 @@ endif() self.vcpkgUrl = self.assets_url + '/dependencies/vcpkg/builds/vcpkg-osx-client.tgz%3FversionId=j0b4azo_zTlH_Q9DElEWOz1UMYZ2nqQw' self.vcpkgHash = '519d666d02ef22b87c793f016ca412e70f92e1d55953c8f9bd4ee40f6d9f78c1df01a6ee293907718f3bbf24075cc35492fb216326dfc50712a95858e9cbcb4d' self.hostTriplet = 'x64-osx' + # Potential fix for a vcpkg build issue on OSX (see https://github.com/microsoft/vcpkg/issues/9029) + self.bootstrapEnv['CXXFLAGS'] = '-D_CTERMID_H_' #if usePrebuilt: # self.prebuiltArchive = self.assets_url + "/dependencies/vcpkg/builds/vcpkg-osx.tgz%3FversionId=6JrIMTdvpBF3MAsjA92BMkO79Psjzs6Z" else: From 466e1a7ce3c21786a2363a42a3180ebf64fda35f Mon Sep 17 00:00:00 2001 From: Thijs Wenker Date: Tue, 31 Mar 2020 13:39:54 +0200 Subject: [PATCH 038/160] - disable osx GHA build for now - fix tbb issue, the repo moved to another location which changed the hash of the source --- cmake/ports/tbb/CONTROL | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/ports/tbb/CONTROL b/cmake/ports/tbb/CONTROL index da29e48794..73569fe661 100644 --- a/cmake/ports/tbb/CONTROL +++ b/cmake/ports/tbb/CONTROL @@ -1,4 +1,4 @@ Source: tbb Version: 2019_U8-1 -Homepage: https://github.com/01org/tbb +Homepage: https://github.com/oneapi-src/oneTBB Description: Intel's Threading Building Blocks. From 25932d3ab5f63263b89148bbd877c5270357cb83 Mon Sep 17 00:00:00 2001 From: Thijs Wenker Date: Wed, 8 Apr 2020 11:12:23 +0200 Subject: [PATCH 039/160] the new build upload script --- .github/workflows/pr_build.yml | 7 ++ tools/ci-scripts/upload_to_publish_server.py | 77 ++++++++++++++++++++ 2 files changed, 84 insertions(+) create mode 100644 tools/ci-scripts/upload_to_publish_server.py diff --git a/.github/workflows/pr_build.yml b/.github/workflows/pr_build.yml index 2d603ea6f4..fba23772fe 100644 --- a/.github/workflows/pr_build.yml +++ b/.github/workflows/pr_build.yml @@ -105,6 +105,13 @@ jobs: shell: bash working-directory: ${{runner.workspace}}/build run: cat ./_CPack_Packages/win64/NSIS/NSISOutput.log + - name: Upload Artifact + shell: bash + working-directory: ${{runner.workspace}}/build + env: + GITHUB_CONTEXT: ${{ toJson(github) }} + ARTIFACT_PATTERN: HighFidelity-Beta-PR${{ github.event.number }}-*.exe + run: python "$GITHUB_WORKSPACE\tools\ci-scripts\upload_to_publish_server.py" build_full_linux: runs-on: ubuntu-latest diff --git a/tools/ci-scripts/upload_to_publish_server.py b/tools/ci-scripts/upload_to_publish_server.py new file mode 100644 index 0000000000..8b363f36aa --- /dev/null +++ b/tools/ci-scripts/upload_to_publish_server.py @@ -0,0 +1,77 @@ +import os +import json +from hashlib import sha256 +import http.client +from http import HTTPStatus +import time +import struct +import random +import glob + +FILE_READ_BUFFER = 4096 + +path = os.path.join(os.getcwd(), os.environ['ARTIFACT_PATTERN']) +files = glob.glob(path, recursive=False) +uploading_files = [] +for archive_file in files: + file = open(archive_file, 'rb') + sha256_hash = sha256() + file.seek(0, 0) + for byte_block in iter(lambda: file.read(FILE_READ_BUFFER), b""): + sha256_hash.update(byte_block) + + checksum = sha256_hash.hexdigest() + + uploading_files.append({ + "filename": os.path.basename(archive_file), + "sha256_checksum": checksum, + "file_length": file.tell() + }) + file.close() + +print("BuildFileHashes: " + json.dumps(uploading_files)) + +file_contents = [] +file_sizes = [] + +for archiveFile in files: + file = open(archiveFile, 'rb') + file_data = file.read() + file_sizes.append(len(file_data)) + file_contents.append(file_data) + file.close() + +conn = http.client.HTTPSConnection("athena-build-uploader.thoys.nl") + +context = json.loads(os.environ['GITHUB_CONTEXT']) + +owner_and_repository = context["repository"].split("/") +owner = owner_and_repository[0] +repository = owner_and_repository[1] + +headers = { + "owner": owner, + "repo": repository, + "commit_hash": context["event"]["pull_request"]["head"]["sha"], + "pull_number": context["event"]["number"], + "job_name": os.environ["JOB_NAME"], + "run_id": context["run_id"], + "file_sizes": ','.join(str(e) for e in file_sizes) +} + +concat_file_body = b''.join(file_contents) + +print("Total files size: " + str(len(concat_file_body))) + +conn.request("PUT", "/", body=concat_file_body, headers=headers) +response = conn.getresponse() + +EXIT_CODE_OK = 0 +EXIT_CODE_ERROR = 1 + +if (response.status == HTTPStatus.OK): + print("response: ", json.loads(response.read())) + exit(EXIT_CODE_OK) +else: + print(response.status, response.reason, response.read()) + exit(EXIT_CODE_ERROR) From b89ddf33eca4d67b2d2610eba7de7ae15b05fd92 Mon Sep 17 00:00:00 2001 From: Thijs Wenker Date: Wed, 8 Apr 2020 12:07:53 +0200 Subject: [PATCH 040/160] fix missing url --- hifi_qt.py | 6 +----- hifi_utils.py | 4 ++++ prebuild.py | 9 ++++++--- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/hifi_qt.py b/hifi_qt.py index 6cae3bf59d..b046342745 100644 --- a/hifi_qt.py +++ b/hifi_qt.py @@ -29,7 +29,7 @@ endif() self.configFilePath = os.path.join(args.build_root, 'qt.cmake') self.version = os.getenv('VIRCADIA_USE_QT_VERSION', '5.12.3') - self.assets_url = self.readVar('EXTERNAL_BUILD_ASSETS') + self.assets_url = hifi_utils.readEnviromentVariableFromFile(args.build_root, 'EXTERNAL_BUILD_ASSETS') defaultBasePath = os.path.expanduser('~/hifi/qt') self.basePath = os.getenv('HIFI_QT_BASE', defaultBasePath) @@ -89,10 +89,6 @@ endif() print("Machine : " + platform.machine()) raise Exception('UNKNOWN OPERATING SYSTEM!!!') - def readVar(self, var): - with open(os.path.join(self.args.build_root, '_env', var + ".txt")) as fp: - return fp.read() - def writeConfig(self): print("Writing cmake config to {}".format(self.configFilePath)) # Write out the configuration for use by CMake diff --git a/hifi_utils.py b/hifi_utils.py index 3a49f6d52b..157e5858a8 100644 --- a/hifi_utils.py +++ b/hifi_utils.py @@ -121,3 +121,7 @@ def downloadAndExtract(url, destPath, hash=None, hasher=hashlib.sha512(), isZip= with tarfile.open(tempFileName, 'r:*') as tgz: tgz.extractall(destPath) os.remove(tempFileName) + +def readEnviromentVariableFromFile(buildRootDir, var): + with open(os.path.join(buildRootDir, '_env', var + ".txt")) as fp: + return fp.read() diff --git a/prebuild.py b/prebuild.py index b15c83e4fe..d0bbc75fb7 100644 --- a/prebuild.py +++ b/prebuild.py @@ -95,6 +95,7 @@ def parse_args(): parser.add_argument('--release-type', type=str, default="DEV", help="DEV, PR, or PRODUCTION") parser.add_argument('--vcpkg-root', type=str, help='The location of the vcpkg distribution') parser.add_argument('--vcpkg-build-type', type=str, help='Could be `release` or `debug`. By default it doesn`t set the build-type') + parser.add_argument('--vcpkg-skip-clean', action='store_true', help='Skip the cleanup of vcpkg downloads and packages folders after vcpkg build completition.') parser.add_argument('--build-root', required=True, type=str, help='The location of the cmake build') parser.add_argument('--ports-path', type=str, default=defaultPortsPath) parser.add_argument('--ci-build', action='store_true', default=os.getenv('CI_BUILD') is not None) @@ -114,6 +115,7 @@ def main(): del os.environ[var] args = parse_args() + assets_url = hifi_utils.readEnviromentVariableFromFile(args.build_root, 'EXTERNAL_BUILD_ASSETS') if args.ci_build: logging.basicConfig(datefmt='%H:%M:%S', format='%(asctime)s %(guid)s %(message)s', level=logging.INFO) @@ -126,7 +128,7 @@ def main(): if 'Windows' == system and 'CI_BUILD' in os.environ and os.environ["CI_BUILD"] == "Github": logger.info("Downloading NSIS") with timer('NSIS'): - hifi_utils.downloadAndExtract('https://athena-public.s3.amazonaws.com/dependencies/NSIS-hifi-plugins-1.0.tgz', "C:/Program Files (x86)") + hifi_utils.downloadAndExtract(assets_url + '/dependencies/NSIS-hifi-plugins-1.0.tgz', "C:/Program Files (x86)") qtInstallPath = '' # If not android, install our Qt build @@ -183,8 +185,9 @@ def main(): # Fixup the vcpkg cmake to not reset VCPKG_TARGET_TRIPLET pm.fixupCmakeScript() - # Cleanup downloads and packages folders in vcpkg to make it smaller for CI - pm.cleanupDevelopmentFiles() + if not args.vcpkg_skip_clean: + # Cleanup downloads and packages folders in vcpkg to make it smaller for CI + pm.cleanupDevelopmentFiles() # Write the vcpkg config to the build directory last with timer('Writing configuration'): From 53bb62756f6bef68db7e9a9e0b4f9a6e2025fbba Mon Sep 17 00:00:00 2001 From: Thijs Wenker Date: Wed, 8 Apr 2020 16:10:33 +0200 Subject: [PATCH 041/160] fix more links --- cmake/ports/glad/portfile.cmake | 7 ++++--- cmake/ports/polyvox/portfile.cmake | 4 +++- cmake/ports/quazip/portfile.cmake | 3 ++- cmake/ports/vhacd/portfile.cmake | 6 ++++-- 4 files changed, 13 insertions(+), 7 deletions(-) diff --git a/cmake/ports/glad/portfile.cmake b/cmake/ports/glad/portfile.cmake index 56ee59e0d4..54b1d91c89 100644 --- a/cmake/ports/glad/portfile.cmake +++ b/cmake/ports/glad/portfile.cmake @@ -1,17 +1,19 @@ include(vcpkg_common_functions) vcpkg_check_linkage(ONLY_STATIC_LIBRARY) +file(READ "${VCPKG_ROOT_DIR}/_env/EXTERNAL_BUILD_ASSETS.txt" EXTERNAL_BUILD_ASSETS) + if (ANDROID) vcpkg_download_distfile( SOURCE_ARCHIVE - URLS https://athena-public.s3.amazonaws.com/dependencies/glad/glad32es.zip + URLS ${EXTERNAL_BUILD_ASSETS}/dependencies/glad/glad32es.zip SHA512 2e02ac633eed8f2ba2adbf96ea85d08998f48dd2e9ec9a88ec3c25f48eaf1405371d258066327c783772fcb3793bdb82bd7375fdabb2ba5e2ce0835468b17f65 ) else() # else Linux desktop vcpkg_download_distfile( SOURCE_ARCHIVE - URLS https://athena-public.s3.amazonaws.com/dependencies/glad/glad45.zip + URLS ${EXTERNAL_BUILD_ASSETS}/dependencies/glad/glad45.zip SHA512 653a7b873f9fbc52e0ab95006cc3143bc7b6f62c6e032bc994e87669273468f37978525c9af5efe36f924cb4acd221eb664ad9af0ce4bf711b4f1be724c0065e FILENAME glad45.zip ) @@ -33,4 +35,3 @@ vcpkg_install_cmake() file(COPY ${CMAKE_CURRENT_LIST_DIR}/copyright DESTINATION ${CURRENT_PACKAGES_DIR}/share/glad) file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include) - diff --git a/cmake/ports/polyvox/portfile.cmake b/cmake/ports/polyvox/portfile.cmake index 275a1a940f..9204b26dbd 100644 --- a/cmake/ports/polyvox/portfile.cmake +++ b/cmake/ports/polyvox/portfile.cmake @@ -1,9 +1,11 @@ include(vcpkg_common_functions) +file(READ "${VCPKG_ROOT_DIR}/_env/EXTERNAL_BUILD_ASSETS.txt" EXTERNAL_BUILD_ASSETS) + # else Linux desktop vcpkg_download_distfile( SOURCE_ARCHIVE - URLS https://athena-public.s3.amazonaws.com/dependencies/polyvox-master-2015-7-15.zip + URLS ${EXTERNAL_BUILD_ASSETS}/dependencies/polyvox-master-2015-7-15.zip SHA512 cc04cd43ae74b9c7bb065953540c0048053fcba6b52dc4218b3d9431fba178d65ad4f6c53cc1122ba61d0ab4061e99a7ebbb15db80011d607c5070ebebf8eddc FILENAME polyvox.zip ) diff --git a/cmake/ports/quazip/portfile.cmake b/cmake/ports/quazip/portfile.cmake index 7ff2d07173..0789062892 100644 --- a/cmake/ports/quazip/portfile.cmake +++ b/cmake/ports/quazip/portfile.cmake @@ -1,10 +1,11 @@ include(vcpkg_common_functions) file(READ "${VCPKG_ROOT_DIR}/_env/QT_CMAKE_PREFIX_PATH.txt" QT_CMAKE_PREFIX_PATH) +file(READ "${VCPKG_ROOT_DIR}/_env/EXTERNAL_BUILD_ASSETS.txt" EXTERNAL_BUILD_ASSETS) vcpkg_download_distfile( SOURCE_ARCHIVE - URLS https://athena-public.s3.amazonaws.com/dependencies/quazip-0.7.3.zip + URLS ${EXTERNAL_BUILD_ASSETS}/dependencies/quazip-0.7.3.zip SHA512 b2d812b6346317fd6d8f4f1344ad48b721d697c429acc8b7e7cb776ce5cba15a59efd64b2c5ae1f31b5a3c928014f084aa1379fd55d8a452a6cf4fd510b3afcc FILENAME quazip.zip ) diff --git a/cmake/ports/vhacd/portfile.cmake b/cmake/ports/vhacd/portfile.cmake index 3a13e461a6..4c74bb6532 100644 --- a/cmake/ports/vhacd/portfile.cmake +++ b/cmake/ports/vhacd/portfile.cmake @@ -1,10 +1,12 @@ include(vcpkg_common_functions) vcpkg_check_linkage(ONLY_STATIC_LIBRARY) +file(READ "${VCPKG_ROOT_DIR}/_env/EXTERNAL_BUILD_ASSETS.txt" EXTERNAL_BUILD_ASSETS) + # else Linux desktop vcpkg_download_distfile( SOURCE_ARCHIVE - URLS https://athena-public.s3.amazonaws.com/dependencies/v-hacd-master.zip + URLS ${EXTERNAL_BUILD_ASSETS}/dependencies/v-hacd-master.zip SHA512 5d9bd4872ead9eb3574e4806d6c4f490353a04036fd5f571e1e44f47cb66b709e311abcd53af30bae0015a690152170aeed93209a626c28ebcfd6591f3bb036f FILENAME vhacd.zip ) @@ -35,4 +37,4 @@ if (WIN32) file(RENAME ${CURRENT_PACKAGES_DIR}/debug/lib/Debug/VHACD_LIB.lib ${CURRENT_PACKAGES_DIR}/debug/lib/VHACD.lib) file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/lib/Debug) endif() -endif() \ No newline at end of file +endif() From 35efa33b747e7628e2c6793e75e0c2d38e37fd4c Mon Sep 17 00:00:00 2001 From: Thijs Wenker Date: Wed, 8 Apr 2020 17:47:13 +0200 Subject: [PATCH 042/160] - set the correct artifact filter - add missing JOB_NAME env --- .github/workflows/pr_build.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/pr_build.yml b/.github/workflows/pr_build.yml index fba23772fe..715effb1f5 100644 --- a/.github/workflows/pr_build.yml +++ b/.github/workflows/pr_build.yml @@ -39,6 +39,7 @@ jobs: id: buildenv1 run: | echo ::set-env name=GIT_COMMIT_SHORT::`echo $GIT_COMMIT | cut -c1-7` + echo ::set-env name=JOB_NAME::build-${{matrix.os}} # Linux build variables if [ "${{ matrix.os }}" = "ubuntu-latest" ]; then echo ::set-env name=PYTHON_EXEC::python3 @@ -110,11 +111,13 @@ jobs: working-directory: ${{runner.workspace}}/build env: GITHUB_CONTEXT: ${{ toJson(github) }} - ARTIFACT_PATTERN: HighFidelity-Beta-PR${{ github.event.number }}-*.exe + ARTIFACT_PATTERN: ProjectAthena-Alpha-PR${{ github.event.number }}-*.exe run: python "$GITHUB_WORKSPACE\tools\ci-scripts\upload_to_publish_server.py" build_full_linux: runs-on: ubuntu-latest + env: + JOB_NAME: build_full_linux if: github.event.action != 'labeled' || github.event.label.name == 'rebuild' steps: - uses: actions/checkout@v1 From 0ebe33b447bf0e8d71e97b7a04b2d1abd5362ed2 Mon Sep 17 00:00:00 2001 From: Thijs Wenker Date: Sat, 11 Apr 2020 17:58:54 +0200 Subject: [PATCH 043/160] change upload server --- tools/ci-scripts/upload_to_publish_server.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/ci-scripts/upload_to_publish_server.py b/tools/ci-scripts/upload_to_publish_server.py index 8b363f36aa..5e1a9b24f2 100644 --- a/tools/ci-scripts/upload_to_publish_server.py +++ b/tools/ci-scripts/upload_to_publish_server.py @@ -41,7 +41,7 @@ for archiveFile in files: file_contents.append(file_data) file.close() -conn = http.client.HTTPSConnection("athena-build-uploader.thoys.nl") +conn = http.client.HTTPSConnection("build-uploader.vircadia.com") context = json.loads(os.environ['GITHUB_CONTEXT']) From 403925ef0e5cb339bb231d901a13ae5b1ac39c2f Mon Sep 17 00:00:00 2001 From: Thijs Wenker Date: Wed, 15 Apr 2020 11:05:44 +0200 Subject: [PATCH 044/160] add missing exceptions qt downloader --- hifi_qt.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hifi_qt.py b/hifi_qt.py index b046342745..803c848f36 100644 --- a/hifi_qt.py +++ b/hifi_qt.py @@ -74,10 +74,10 @@ endif() self.qtUrl = self.assets_url + '/dependencies/vcpkg/qt5-install-5.12.6-ubuntu-19.10.tar.xz' elif u_major > 18 and ( u_major != 19 and u_minor != 4): print("We don't support " + distro.name(pretty=True) + " yet. Perhaps consider helping us out?") - raise Exception('UNSUPPORTED LINUX VERSION!!!') + raise Exception('YET UNSUPPORTED VERSION OF LINUX DISTRO!!!') else: print("Sorry, " + distro.name(pretty=True) + " is old and won't be officially supported. Please consider upgrading."); - raise Exception('UNSUPPORTED LINUX VERSION!!!') + raise Exception('UNKNOWN LINUX DISTRO VERSION!!!') else: print("Sorry, " + distro.name(pretty=True) + " is not supported. Please consider helping us out.") print("It's also possible to build Qt for your distribution, please see the documentation at:") From ba62b06f2529e531a0cc65365c8f1e95593156df Mon Sep 17 00:00:00 2001 From: Thijs Wenker Date: Wed, 15 Apr 2020 11:15:26 +0200 Subject: [PATCH 045/160] move comment to the code it belongs to --- prebuild.py | 1 + 1 file changed, 1 insertion(+) diff --git a/prebuild.py b/prebuild.py index d0bbc75fb7..cc315a49a4 100644 --- a/prebuild.py +++ b/prebuild.py @@ -149,6 +149,7 @@ def main(): if qtInstallPath != '': pm.writeVar('QT_CMAKE_PREFIX_PATH', qtInstallPath) + # Only allow one instance of the program to run at a time with hifi_singleton.Singleton(pm.lockFile) as lock: with timer('Bootstraping'): From e71a94cc3ef7b98a4de24071551dbbdad162c71e Mon Sep 17 00:00:00 2001 From: Thijs Wenker Date: Wed, 15 Apr 2020 11:45:21 +0200 Subject: [PATCH 046/160] Build.md: Generating a release/debug only vcpkg build docs --- BUILD.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/BUILD.md b/BUILD.md index bc032d4ec7..1cad8724b3 100644 --- a/BUILD.md +++ b/BUILD.md @@ -73,6 +73,18 @@ 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, try removing `CMakeCache.txt`. +##### Generating a release/debug only vcpkg build + +In order to generate a release or debug only vcpkg package, you could use the use the `VCPKG_BUILD_TYPE` define in your cmake generate command. Building a release only vcpkg can drastically decrease the total build time. + +For release only vcpkg: + +`cmake .. -DVCPKG_BUILD_TYPE=release` + +For debug only vcpkg: + +`cmake .. -DVCPKG_BUILD_TYPE=debug` + #### 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. From 1dd843c916abff18db5a208ca673a14d42bdf2f3 Mon Sep 17 00:00:00 2001 From: Thijs Wenker Date: Fri, 17 Apr 2020 15:23:20 +0200 Subject: [PATCH 047/160] set correct JOB_NAME in osx/windows GHA environment --- .github/workflows/pr_build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pr_build.yml b/.github/workflows/pr_build.yml index 715effb1f5..dd373d0ad5 100644 --- a/.github/workflows/pr_build.yml +++ b/.github/workflows/pr_build.yml @@ -39,7 +39,7 @@ jobs: id: buildenv1 run: | echo ::set-env name=GIT_COMMIT_SHORT::`echo $GIT_COMMIT | cut -c1-7` - echo ::set-env name=JOB_NAME::build-${{matrix.os}} + echo ::set-env name=JOB_NAME::"build (${{matrix.os}}, ${{matrix.build_type}})" # Linux build variables if [ "${{ matrix.os }}" = "ubuntu-latest" ]; then echo ::set-env name=PYTHON_EXEC::python3 From 3a4b312b534662776fa20b30c720f2a2f9e1dc06 Mon Sep 17 00:00:00 2001 From: Thijs Wenker Date: Fri, 17 Apr 2020 16:15:07 +0200 Subject: [PATCH 048/160] ubuntu github actions: use pip3 instead of python 2.7 version of pip --- .github/workflows/pr_build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pr_build.yml b/.github/workflows/pr_build.yml index dd373d0ad5..685966ee63 100644 --- a/.github/workflows/pr_build.yml +++ b/.github/workflows/pr_build.yml @@ -127,10 +127,10 @@ jobs: - name: Update apt repository index run: sudo apt update - name: Install apt packages - run: sudo apt install -y mesa-common-dev libegl1 libglvnd-dev libdouble-conversion1 libpulse0 + run: sudo apt install -y mesa-common-dev libegl1 libglvnd-dev libdouble-conversion1 libpulse0 python3-setuptools - name: Install python modules shell: bash - run: pip install boto3 distro PyGithub + run: pip3 install boto3 distro PyGithub - name: Create Build Environment run: cmake -E make_directory ${{runner.workspace}}/build - name: Configure CMake From e85c50e71209887950cc96bd06e3a2bb0163d77c Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Sun, 19 Apr 2020 23:44:11 -0400 Subject: [PATCH 049/160] Update URL. --- 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 932609ecfb..4657affb67 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -3167,7 +3167,7 @@ void Application::showLoginScreen() { #endif } -static const QUrl AUTHORIZED_EXTERNAL_QML_SOURCE { "https://kasenvr.github.io/community-apps/applications" }; +static const QUrl AUTHORIZED_EXTERNAL_QML_SOURCE { "https://cdn.vircadia.com/community-apps/applications" }; void Application::initializeUi() { From 2d6d205bf2bc3f42658b152237cc716785c9f2aa Mon Sep 17 00:00:00 2001 From: Heather Anderson Date: Tue, 21 Apr 2020 23:15:08 -0700 Subject: [PATCH 050/160] The original patch was more appropriate. We need to figure out what this needs to do, enough dancing. This reverts commit bc5dd45187329d1b2c3c5eb467be7c77aab597d1. --- interface/src/ui/PreferencesDialog.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/src/ui/PreferencesDialog.cpp b/interface/src/ui/PreferencesDialog.cpp index b59aa88a70..4ce30063e2 100644 --- a/interface/src/ui/PreferencesDialog.cpp +++ b/interface/src/ui/PreferencesDialog.cpp @@ -259,7 +259,7 @@ void setupPreferences() { } { - auto getter = []()->bool { return Menu::getInstance()->isOptionChecked(MenuOption::DisableCrashLogger); }; + auto getter = []()->bool { return !Menu::getInstance()->isOptionChecked(MenuOption::DisableCrashLogger); }; auto setter = [](bool value) { Menu::getInstance()->setIsOptionChecked(MenuOption::DisableCrashLogger, !value); }; preferences->addPreference(new CheckPreference("Privacy", "Send crashes - Vircadia uses information provided by your " "client to improve the product through crash reports. By allowing Vircadia to collect " From fd63e0ed4fb1fe7178fcc87160b256ae3ee44f86 Mon Sep 17 00:00:00 2001 From: Thijs Wenker Date: Wed, 22 Apr 2020 12:20:30 +0200 Subject: [PATCH 051/160] set linux github action to 16.04 to maintain backward compatibility --- .github/workflows/pr_build.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pr_build.yml b/.github/workflows/pr_build.yml index 685966ee63..cd7c42ff80 100644 --- a/.github/workflows/pr_build.yml +++ b/.github/workflows/pr_build.yml @@ -9,7 +9,8 @@ env: BUILD_TYPE: Release CI_BUILD: Github GIT_COMMIT: ${{ github.sha }} - HIFI_VCPKG_BOOTSTRAP: true + # VCPKG did not build well on OSX disabling HIFI_VCPKG_BOOTSTRAP, which invokes a download to a working version of vcpkg + # HIFI_VCPKG_BOOTSTRAP: true RELEASE_TYPE: PR RELEASE_NUMBER: ${{ github.event.number }} VERSION_CODE: ${{ github.event.number }} @@ -115,7 +116,7 @@ jobs: run: python "$GITHUB_WORKSPACE\tools\ci-scripts\upload_to_publish_server.py" build_full_linux: - runs-on: ubuntu-latest + runs-on: ubuntu-16.04 env: JOB_NAME: build_full_linux if: github.event.action != 'labeled' || github.event.label.name == 'rebuild' From 5fa8571c0ba62d4e79450b815fdd4779a8253b3d Mon Sep 17 00:00:00 2001 From: Thijs Wenker Date: Wed, 22 Apr 2020 19:14:18 +0200 Subject: [PATCH 052/160] shared seems to require linking with CoreFoundation and OpenGL on OSX --- libraries/shared/CMakeLists.txt | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/libraries/shared/CMakeLists.txt b/libraries/shared/CMakeLists.txt index eb3e286843..57904be586 100644 --- a/libraries/shared/CMakeLists.txt +++ b/libraries/shared/CMakeLists.txt @@ -13,6 +13,13 @@ if (ANDROID) target_link_libraries(${TARGET_NAME} android) endif() +if (APPLE) + find_library(FRAMEWORK_IOKIT IOKit) + find_library(CORE_FOUNDATION CoreFoundation) + find_library(OpenGL OpenGL) + target_link_libraries(${TARGET_NAME} ${FRAMEWORK_IOKIT} ${CORE_FOUNDATION} ${OpenGL}) +endif() + target_zlib() target_nsight() target_json() From b4362ea85ae04e4520d347c3438b0d073c570208 Mon Sep 17 00:00:00 2001 From: Thijs Wenker Date: Wed, 22 Apr 2020 22:59:01 +0200 Subject: [PATCH 053/160] move template functions to header --- .../src/graphics/BufferViewHelpers.cpp | 44 ---------------- .../graphics/src/graphics/BufferViewHelpers.h | 50 ++++++++++++++++++- 2 files changed, 48 insertions(+), 46 deletions(-) diff --git a/libraries/graphics/src/graphics/BufferViewHelpers.cpp b/libraries/graphics/src/graphics/BufferViewHelpers.cpp index 076cb92dcf..58ddbc9f58 100644 --- a/libraries/graphics/src/graphics/BufferViewHelpers.cpp +++ b/libraries/graphics/src/graphics/BufferViewHelpers.cpp @@ -120,50 +120,6 @@ template<> glm::uint32 forEach(const gpu::BufferView& view, std::func return forEachGlmVec(view, func); } -template -QVariant glmVecToVariant(const T& v, bool asArray /*= false*/) { - static const auto len = T().length(); - if (asArray) { - QVariantList list; - for (int i = 0; i < len ; i++) { - list << v[i]; - } - return list; - } else { - QVariantMap obj; - for (int i = 0; i < len ; i++) { - obj[XYZW[i]] = v[i]; - } - return obj; - } -} - -template -const T glmVecFromVariant(const QVariant& v) { - auto isMap = v.type() == (QVariant::Type)QMetaType::QVariantMap; - static const auto len = T().length(); - const auto& components = isMap ? XYZW : ZERO123; - T result; - QVariantMap map; - QVariantList list; - if (isMap) map = v.toMap(); else list = v.toList(); - for (int i = 0; i < len ; i++) { - float value; - if (isMap) { - value = map.value(components[i]).toFloat(); - } else { - value = list.value(i).toFloat(); - } -#ifdef DEBUG_BUFFERVIEW_HELPERS - if (value != value) { // NAN - qWarning().nospace()<< "vec" << len << "." << components[i] << " NAN received from script.... " << v.toString(); - } -#endif - result[i] = value; - } - return result; -} - // QVector => BufferView template gpu::BufferView newFromVector(const QVector& elements, const gpu::Element& elementType) { diff --git a/libraries/graphics/src/graphics/BufferViewHelpers.h b/libraries/graphics/src/graphics/BufferViewHelpers.h index 3635ef64e5..4c467b5175 100644 --- a/libraries/graphics/src/graphics/BufferViewHelpers.h +++ b/libraries/graphics/src/graphics/BufferViewHelpers.h @@ -27,8 +27,54 @@ namespace buffer_helpers { extern const std::array XYZW; extern const std::array ZERO123; - template QVariant glmVecToVariant(const T& v, bool asArray = false); - template const T glmVecFromVariant(const QVariant& v); + template + QVariant glmVecToVariant(const T& v, bool asArray = false) { + static const auto len = T().length(); + if (asArray) { + QVariantList list; + for (int i = 0; i < len; i++) { + list << v[i]; + } + return list; + } else { + QVariantMap obj; + for (int i = 0; i < len; i++) { + obj[XYZW[i]] = v[i]; + } + return obj; + } + } + + template + const T glmVecFromVariant(const QVariant& v) { + auto isMap = v.type() == (QVariant::Type)QMetaType::QVariantMap; + static const auto len = T().length(); + const auto& components = isMap ? XYZW : ZERO123; + T result; + QVariantMap map; + QVariantList list; + if (isMap) { + map = v.toMap(); + } else { + list = v.toList(); + } + for (int i = 0; i < len; i++) { + float value; + if (isMap) { + value = map.value(components[i]).toFloat(); + } else { + value = list.value(i).toFloat(); + } +#ifdef DEBUG_BUFFERVIEW_HELPERS + if (value != value) { // NAN + qWarning().nospace() << "vec" << len << "." << components[i] << " NAN received from script.... " << v.toString(); + } +#endif + result[i] = value; + } + return result; + } + glm::uint32 forEachVariant(const gpu::BufferView& view, std::function func, const char* hint = ""); template glm::uint32 forEach(const gpu::BufferView& view, std::function func); From c4a0fc30bbe8b57e66d3806d9bf026fe1dc01caa Mon Sep 17 00:00:00 2001 From: Thijs Wenker Date: Wed, 22 Apr 2020 23:09:17 +0200 Subject: [PATCH 054/160] fix not matching declaration/definition argument name --- libraries/graphics/src/graphics/BufferViewHelpers.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/graphics/src/graphics/BufferViewHelpers.h b/libraries/graphics/src/graphics/BufferViewHelpers.h index 4c467b5175..c42bb0426d 100644 --- a/libraries/graphics/src/graphics/BufferViewHelpers.h +++ b/libraries/graphics/src/graphics/BufferViewHelpers.h @@ -82,7 +82,7 @@ namespace buffer_helpers { template gpu::BufferView newFromVector(const QVector& elements, const gpu::Element& elementType); template gpu::BufferView newFromVariantList(const QVariantList& list, const gpu::Element& elementType); - template QVector variantToVector(const QVariant& list); + template QVector variantToVector(const QVariant& value); template QVector bufferToVector(const gpu::BufferView& view, const char *hint = ""); // note: these do value conversions from the underlying buffer type into the template type From f186c9341a3c32bb02e95e6a8c30235e3d8391b7 Mon Sep 17 00:00:00 2001 From: Thijs Wenker Date: Wed, 22 Apr 2020 20:46:07 +0200 Subject: [PATCH 055/160] linux gha fix # Conflicts: # .github/workflows/pr_build.yml --- .github/workflows/pr_build.yml | 65 ++++++++++++++-------------------- 1 file changed, 27 insertions(+), 38 deletions(-) diff --git a/.github/workflows/pr_build.yml b/.github/workflows/pr_build.yml index cd7c42ff80..b28e237f96 100644 --- a/.github/workflows/pr_build.yml +++ b/.github/workflows/pr_build.yml @@ -29,8 +29,12 @@ jobs: build: strategy: matrix: - os: [windows-latest, macOS-latest] + os: [windows-latest, macOS-latest, ubuntu-18.04] build_type: [full] + include: + - os: ubuntu-18.04 + build_type: full + apt-dependencies: mesa-common-dev libegl1 libglvnd-dev libdouble-conversion1 libpulse0 fail-fast: false runs-on: ${{matrix.os}} if: github.event.action != 'labeled' || github.event.label.name == 'rebuild' @@ -41,10 +45,12 @@ jobs: run: | echo ::set-env name=GIT_COMMIT_SHORT::`echo $GIT_COMMIT | cut -c1-7` echo ::set-env name=JOB_NAME::"build (${{matrix.os}}, ${{matrix.build_type}})" + # Linux build variables - if [ "${{ matrix.os }}" = "ubuntu-latest" ]; then + if [[ "${{ matrix.os }}" = "ubuntu-"* ]]; then echo ::set-env name=PYTHON_EXEC::python3 echo ::set-env name=INSTALLER_EXT::tgz + echo ::set-env name=CMAKE_BUILD_EXTRA::"-- -j3" fi # Mac build variables if [ "${{ matrix.os }}" = "macOS-latest" ]; then @@ -63,11 +69,11 @@ jobs: shell: bash run: | echo "${{ steps.buildenv1.outputs.symbols_archive }}" - echo ::set-env name=ARTIFACT_PATTERN::HighFidelity-Beta-*.$INSTALLER_EXT + echo ::set-env name=ARTIFACT_PATTERN::ProjectAthena-Alpha-PR${{ github.event.number }}-*.$INSTALLER_EXT # Build type variables echo ::set-env name=INSTALLER::HighFidelity-Beta-$RELEASE_NUMBER-$GIT_COMMIT_SHORT.$INSTALLER_EXT - name: Clear Working Directory - if: matrix.os[1] == 'windows' + if: startsWith(matrix.os, 'windows') shell: bash working-directory: ${{runner.workspace}} run: rm -rf ./* @@ -75,6 +81,18 @@ jobs: with: submodules: true fetch-depth: 1 + - name: Install dependencies + shell: bash + if: startsWith(matrix.os, 'ubuntu') + run: | + echo "Installing Python Modules:" + pip3 install distro || exit 1 + + echo "Updating apt repository index" + sudo apt update || exit 1 + + echo "Installing apt packages" + sudo apt install -y ${{ matrix.apt-dependencies }} || exit 1 - name: Create Build Environment shell: bash run: cmake -E make_directory "${{runner.workspace}}/build" @@ -85,23 +103,23 @@ jobs: - name: Build Application working-directory: ${{runner.workspace}}/build shell: bash - run: cmake --build . --config $BUILD_TYPE --target $APP_NAME + run: cmake --build . --config $BUILD_TYPE --target $APP_NAME $CMAKE_BUILD_EXTRA - name: Build Domain Server working-directory: ${{runner.workspace}}/build shell: bash - run: cmake --build . --config $BUILD_TYPE --target domain-server + run: cmake --build . --config $BUILD_TYPE --target domain-server $CMAKE_BUILD_EXTRA - name: Build Assignment Client working-directory: ${{runner.workspace}}/build shell: bash - run: cmake --build . --config $BUILD_TYPE --target assignment-client + run: cmake --build . --config $BUILD_TYPE --target assignment-client $CMAKE_BUILD_EXTRA - name: Build Console working-directory: ${{runner.workspace}}/build shell: bash - run: cmake --build . --config $BUILD_TYPE --target packaged-server-console + run: cmake --build . --config $BUILD_TYPE --target packaged-server-console $CMAKE_BUILD_EXTRA - name: Build Installer working-directory: ${{runner.workspace}}/build shell: bash - run: cmake --build . --config $BUILD_TYPE --target package + run: cmake --build . --config $BUILD_TYPE --target package $CMAKE_BUILD_EXTRA - name: Output Installer Logs if: failure() && matrix.os == 'windows-latest' shell: bash @@ -112,33 +130,4 @@ jobs: working-directory: ${{runner.workspace}}/build env: GITHUB_CONTEXT: ${{ toJson(github) }} - ARTIFACT_PATTERN: ProjectAthena-Alpha-PR${{ github.event.number }}-*.exe run: python "$GITHUB_WORKSPACE\tools\ci-scripts\upload_to_publish_server.py" - - build_full_linux: - runs-on: ubuntu-16.04 - env: - JOB_NAME: build_full_linux - if: github.event.action != 'labeled' || github.event.label.name == 'rebuild' - steps: - - uses: actions/checkout@v1 - with: - submodules: true - fetch-depth: 1 - - name: Update apt repository index - run: sudo apt update - - name: Install apt packages - run: sudo apt install -y mesa-common-dev libegl1 libglvnd-dev libdouble-conversion1 libpulse0 python3-setuptools - - name: Install python modules - shell: bash - run: pip3 install boto3 distro PyGithub - - name: Create Build Environment - run: cmake -E make_directory ${{runner.workspace}}/build - - name: Configure CMake - working-directory: ${{runner.workspace}}/build - shell: bash - run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DVCPKG_BUILD_TYPE=release -DBUILD_TOOLS:BOOLEAN=FALSE - - name: - shell: bash - working-directory: ${{runner.workspace}}/build - run: cmake --build . -- -j3 From ee8ee9c6118343eeb86bcc9ef91b49da3a3ceab5 Mon Sep 17 00:00:00 2001 From: Thijs Wenker Date: Thu, 23 Apr 2020 09:48:09 +0200 Subject: [PATCH 056/160] disable build tools --- .github/workflows/pr_build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/pr_build.yml b/.github/workflows/pr_build.yml index b28e237f96..05f049fae6 100644 --- a/.github/workflows/pr_build.yml +++ b/.github/workflows/pr_build.yml @@ -51,6 +51,7 @@ jobs: echo ::set-env name=PYTHON_EXEC::python3 echo ::set-env name=INSTALLER_EXT::tgz echo ::set-env name=CMAKE_BUILD_EXTRA::"-- -j3" + echo ::set-env name=CMAKE_EXTRA::"-DBUILD_TOOLS:BOOLEAN=FALSE" fi # Mac build variables if [ "${{ matrix.os }}" = "macOS-latest" ]; then From 5375c341a634d98ce63400166336a8d5e99c6e6c Mon Sep 17 00:00:00 2001 From: Thijs Wenker Date: Thu, 23 Apr 2020 11:10:56 +0200 Subject: [PATCH 057/160] fix upload script path --- .github/workflows/pr_build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pr_build.yml b/.github/workflows/pr_build.yml index 05f049fae6..0a854f687b 100644 --- a/.github/workflows/pr_build.yml +++ b/.github/workflows/pr_build.yml @@ -131,4 +131,4 @@ jobs: working-directory: ${{runner.workspace}}/build env: GITHUB_CONTEXT: ${{ toJson(github) }} - run: python "$GITHUB_WORKSPACE\tools\ci-scripts\upload_to_publish_server.py" + run: python "$GITHUB_WORKSPACE/tools/ci-scripts/upload_to_publish_server.py" From 3105b7f7c6601ee8f96dd785ea1fceb1e98fa11a Mon Sep 17 00:00:00 2001 From: Thijs Wenker Date: Thu, 23 Apr 2020 12:24:45 +0200 Subject: [PATCH 058/160] use PYTHON_EXEC for upload script to select the correct version of python --- .github/workflows/pr_build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pr_build.yml b/.github/workflows/pr_build.yml index 0a854f687b..43709d02cf 100644 --- a/.github/workflows/pr_build.yml +++ b/.github/workflows/pr_build.yml @@ -131,4 +131,4 @@ jobs: working-directory: ${{runner.workspace}}/build env: GITHUB_CONTEXT: ${{ toJson(github) }} - run: python "$GITHUB_WORKSPACE/tools/ci-scripts/upload_to_publish_server.py" + run: $PYTHON_EXEC "$GITHUB_WORKSPACE/tools/ci-scripts/upload_to_publish_server.py" From 44cc1c14b405e5bdda59a62aecbbed5f98b7be41 Mon Sep 17 00:00:00 2001 From: Thijs Wenker Date: Thu, 23 Apr 2020 14:00:23 +0200 Subject: [PATCH 059/160] get multiple linux artifacts to check them out --- .github/workflows/pr_build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pr_build.yml b/.github/workflows/pr_build.yml index 43709d02cf..57d32741ca 100644 --- a/.github/workflows/pr_build.yml +++ b/.github/workflows/pr_build.yml @@ -49,7 +49,7 @@ jobs: # Linux build variables if [[ "${{ matrix.os }}" = "ubuntu-"* ]]; then echo ::set-env name=PYTHON_EXEC::python3 - echo ::set-env name=INSTALLER_EXT::tgz + echo ::set-env name=INSTALLER_EXT::* echo ::set-env name=CMAKE_BUILD_EXTRA::"-- -j3" echo ::set-env name=CMAKE_EXTRA::"-DBUILD_TOOLS:BOOLEAN=FALSE" fi From e29271d8cadc42bce47f7d9dd09a4d6afeed1ee3 Mon Sep 17 00:00:00 2001 From: Heather Anderson Date: Sat, 25 Apr 2020 20:32:38 -0700 Subject: [PATCH 060/160] rename variables from "is crash enabled" to "is crash monitor enabled" (suggested by Thijs Wenker ) added a debug message giving the current state of the debug monitor switch (ignoring whether Crashpad support is compiled) --- interface/src/Menu.cpp | 2 +- interface/src/main.cpp | 4 ++-- libraries/networking/src/UserActivityLogger.cpp | 4 ++-- libraries/networking/src/UserActivityLogger.h | 8 ++++---- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/interface/src/Menu.cpp b/interface/src/Menu.cpp index a567033c2f..08a0246c1b 100644 --- a/interface/src/Menu.cpp +++ b/interface/src/Menu.cpp @@ -608,7 +608,7 @@ Menu::Menu() { 0, false, &UserActivityLogger::getInstance(), - SLOT(crashDisable(bool))); + SLOT(crashMonitorDisable(bool))); addActionToQMenuAndActionHash(networkMenu, MenuOption::ShowDSConnectTable, 0, qApp, SLOT(loadDomainConnectionDialog())); diff --git a/interface/src/main.cpp b/interface/src/main.cpp index 27171a5828..4c99fa8be4 100644 --- a/interface/src/main.cpp +++ b/interface/src/main.cpp @@ -218,12 +218,12 @@ int main(int argc, const char* argv[]) { } qDebug() << "UserActivityLogger is enabled:" << ual.isEnabled(); - if (ual.isCrashEnabled()) { + qDebug() << "Crash handler logger is enabled:" << ual.isCrashMonitorEnabled(); + if (ual.isCrashMonitorEnabled()) { auto crashHandlerStarted = startCrashHandler(argv[0]); qDebug() << "Crash handler started:" << crashHandlerStarted; } - const QString& applicationName = getInterfaceSharedMemoryName(); bool instanceMightBeRunning = true; #ifdef Q_OS_WIN diff --git a/libraries/networking/src/UserActivityLogger.cpp b/libraries/networking/src/UserActivityLogger.cpp index ec04d03851..94d6371ba4 100644 --- a/libraries/networking/src/UserActivityLogger.cpp +++ b/libraries/networking/src/UserActivityLogger.cpp @@ -34,8 +34,8 @@ void UserActivityLogger::disable(bool disable) { _disabled.set(disable); } -void UserActivityLogger::crashDisable(bool disable) { - _crashDisabled.set(disable); +void UserActivityLogger::crashMonitorDisable(bool disable) { + _crashMonitorDisabled.set(disable); } void UserActivityLogger::logAction(QString action, QJsonObject details, JSONCallbackParameters params) { diff --git a/libraries/networking/src/UserActivityLogger.h b/libraries/networking/src/UserActivityLogger.h index 881c287341..98a707155e 100644 --- a/libraries/networking/src/UserActivityLogger.h +++ b/libraries/networking/src/UserActivityLogger.h @@ -35,11 +35,11 @@ public slots: bool isEnabled() { return !_disabled.get(); } bool isDisabledSettingSet() const { return _disabled.isSet(); } - bool isCrashEnabled() { return !_crashDisabled.get(); } - bool isCrashDisabledSettingSet() const { return _crashDisabled.isSet(); } + bool isCrashMonitorEnabled() { return !_crashMonitorDisabled.get(); } + bool isCrashMonitorDisabledSettingSet() const { return _crashMonitorDisabled.isSet(); } void disable(bool disable); - void crashDisable(bool disable); + void crashMonitorDisable(bool disable); void logAction(QString action, QJsonObject details = QJsonObject(), JSONCallbackParameters params = JSONCallbackParameters()); void launch(QString applicationVersion, bool previousSessionCrashed, int previousSessionRuntime); @@ -59,7 +59,7 @@ private slots: private: UserActivityLogger(); Setting::Handle _disabled { "UserActivityLoggerDisabled", true }; - Setting::Handle _crashDisabled { "CrashLoggerDisabled", false }; + Setting::Handle _crashMonitorDisabled { "CrashMonitorDisabled", false }; QElapsedTimer _timer; }; From da6b59f3f2bad2c216311f3fd117f4f1952f9904 Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Sun, 26 Apr 2020 21:54:05 +0000 Subject: [PATCH 061/160] Don't let Linux build of glm with clang-9 fail due to stray semicolon --- cmake/ports/glm/disable_warnings_as_error.patch | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/cmake/ports/glm/disable_warnings_as_error.patch b/cmake/ports/glm/disable_warnings_as_error.patch index f87616b1ec..5dabaa6323 100644 --- a/cmake/ports/glm/disable_warnings_as_error.patch +++ b/cmake/ports/glm/disable_warnings_as_error.patch @@ -1,7 +1,16 @@ diff --git a/CMakeLists.txt b/CMakeLists.txt -index 756673a3..5fbc8906 100644 +index 756673a..9b3aa07 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt +@@ -194,7 +194,7 @@ if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") + message("GLM: Clang - ${CMAKE_CXX_COMPILER_ID} compiler") + endif() + +- add_compile_options(-Werror -Weverything) ++ add_compile_options(-Weverything) + add_compile_options(-Wno-c++98-compat -Wno-c++98-compat-pedantic -Wno-c++11-long-long -Wno-padded -Wno-gnu-anonymous-struct -Wno-nested-anon-types) + add_compile_options(-Wno-undefined-reinterpret-cast -Wno-sign-conversion -Wno-unused-variable -Wno-missing-prototypes -Wno-unreachable-code -Wno-missing-variable-declarations -Wno-sign-compare -Wno-global-constructors -Wno-unused-macros -Wno-format-nonliteral) + @@ -216,7 +216,7 @@ elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC") message("GLM: Visual C++ - ${CMAKE_CXX_COMPILER_ID} compiler") endif() From bbda0cc6d009ecf6d7576c33927186f8f5724ae6 Mon Sep 17 00:00:00 2001 From: Thijs Wenker Date: Mon, 27 Apr 2020 01:17:45 +0200 Subject: [PATCH 062/160] CR fixes --- hifi_qt.py | 2 +- hifi_vcpkg.py | 12 +++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/hifi_qt.py b/hifi_qt.py index 803c848f36..10708e4bc9 100644 --- a/hifi_qt.py +++ b/hifi_qt.py @@ -74,7 +74,7 @@ endif() self.qtUrl = self.assets_url + '/dependencies/vcpkg/qt5-install-5.12.6-ubuntu-19.10.tar.xz' elif u_major > 18 and ( u_major != 19 and u_minor != 4): print("We don't support " + distro.name(pretty=True) + " yet. Perhaps consider helping us out?") - raise Exception('YET UNSUPPORTED VERSION OF LINUX DISTRO!!!') + raise Exception('LINUX DISTRO IS NOT SUPPORTED YET!!!') else: print("Sorry, " + distro.name(pretty=True) + " is old and won't be officially supported. Please consider upgrading."); raise Exception('UNKNOWN LINUX DISTRO VERSION!!!') diff --git a/hifi_vcpkg.py b/hifi_vcpkg.py index 4d347a289a..569bd49545 100644 --- a/hifi_vcpkg.py +++ b/hifi_vcpkg.py @@ -83,7 +83,9 @@ endif() self.bootstrapEnv = os.environ.copy() self.buildEnv = os.environ.copy() self.prebuiltArchive = None - usePrebuilt = ('CI_BUILD' in os.environ) and os.environ["CI_BUILD"] == "Github" and (not self.noClean) + usePrebuilt = False + # usePrebuild Disabled, to re-enabled using the prebuilt archives for GitHub action builds uncomment the following line: + # usePrebuilt = ('CI_BUILD' in os.environ) and os.environ["CI_BUILD"] == "Github" and (not self.noClean) if 'Windows' == system: self.exe = os.path.join(self.path, 'vcpkg.exe') @@ -91,8 +93,8 @@ endif() self.vcpkgUrl = self.assets_url + '/dependencies/vcpkg/builds/vcpkg-win32-client.zip%3FversionId=tSFzbw01VkkVFeRQ6YuAY4dro2HxJR9U' self.vcpkgHash = 'a650db47a63ccdc9904b68ddd16af74772e7e78170b513ea8de5a3b47d032751a3b73dcc7526d88bcb500753ea3dd9880639ca842bb176e2bddb1710f9a58cd3' self.hostTriplet = 'x64-windows' - #if usePrebuilt: - # self.prebuiltArchive = "https://ipfs.io/ipfs/QmcBggttJQb1vYeyz29FXfaxnJ5c1HfZW72xNQepnENude/vcpkg-win32-a2623c6a-release.zip" + if usePrebuilt: + self.prebuiltArchive = self.assets_url + "/dependencies/vcpkg/builds/vcpkg-win32.zip%3FversionId=3SF3mDC8dkQH1JP041m88xnYmWNzZflx" elif 'Darwin' == system: self.exe = os.path.join(self.path, 'vcpkg') self.bootstrapCmds = [ os.path.join(self.path, 'bootstrap-vcpkg.sh'), '--allowAppleClang', '-disableMetrics' ] @@ -101,8 +103,8 @@ endif() self.hostTriplet = 'x64-osx' # Potential fix for a vcpkg build issue on OSX (see https://github.com/microsoft/vcpkg/issues/9029) self.bootstrapEnv['CXXFLAGS'] = '-D_CTERMID_H_' - #if usePrebuilt: - # self.prebuiltArchive = self.assets_url + "/dependencies/vcpkg/builds/vcpkg-osx.tgz%3FversionId=6JrIMTdvpBF3MAsjA92BMkO79Psjzs6Z" + if usePrebuilt: + self.prebuiltArchive = self.assets_url + "/dependencies/vcpkg/builds/vcpkg-osx.tgz%3FversionId=6JrIMTdvpBF3MAsjA92BMkO79Psjzs6Z" else: self.exe = os.path.join(self.path, 'vcpkg') self.bootstrapCmds = [ os.path.join(self.path, 'bootstrap-vcpkg.sh'), '-disableMetrics' ] From e850e6fe226c45930085b95d7f56cda28b4796f7 Mon Sep 17 00:00:00 2001 From: Alezia Kurdis <60075796+AleziaKurdis@users.noreply.github.com> Date: Mon, 27 Apr 2020 22:05:24 -0400 Subject: [PATCH 063/160] Adding field screenshare Adding field screenshare to avoid conflict --- .../html/js/entityProperties.js | 52 +++++++++++-------- 1 file changed, 31 insertions(+), 21 deletions(-) diff --git a/scripts/system/create/entityProperties/html/js/entityProperties.js b/scripts/system/create/entityProperties/html/js/entityProperties.js index 78ebe5b5cb..59755df122 100644 --- a/scripts/system/create/entityProperties/html/js/entityProperties.js +++ b/scripts/system/create/entityProperties/html/js/entityProperties.js @@ -67,11 +67,16 @@ const GROUPS = [ replaceID: "placeholder-property-id", multiDisplayMode: PROPERTY_MULTI_DISPLAY_MODE.COMMA_SEPARATED_VALUES, }, - { + /*{ label: "Description", type: "string", propertyID: "description", - }, + },*/ + { //THIS IS ONLY FOR THE TEST ########################################## + label: "Description", + type: "multipleZonesSelection", + propertyID: "description", + }, // END TEST ############################# { label: "Parent", type: "string", @@ -115,11 +120,6 @@ const GROUPS = [ lines: "Wireframe", }, propertyID: "primitiveMode", - }, - { - label: "Render With Zones", - type: "multipleZonesSelection", - propertyID: "renderWithZones", } ] }, @@ -580,6 +580,12 @@ const GROUPS = [ type: "dropdown", options: { inherit: "Inherit", crowd: "Crowd", hero: "Hero" }, propertyID: "avatarPriority", + }, + { + label: "Screen-share", + type: "dropdown", + options: { inherit: "Inherit", disabled: "Off", enabled: "On" }, + propertyID: "screenshare", } ] }, @@ -1897,7 +1903,7 @@ function resetProperties() { } case 'multipleZonesSelection': { property.elInput.classList.remove('multi-diff'); - property.elInput.value = "[]"; + property.elInput.value = "[]"; //################################## PROBABLY SOMETHING TO ADJUST HERE! setZonesSelectionData(property.elInput, false); break; } @@ -3582,19 +3588,20 @@ function addZoneToZonesSelection(propertyId) { let selectedZones = JSON.parse(hiddenField.value); let zoneToAdd = document.getElementById("zones-select-" + propertyId).value; if (!selectedZones.includes(zoneToAdd)) { - selectedZones.push(zoneToAdd); + selectedZones.push(zoneToAdd); } hiddenField.value = JSON.stringify(selectedZones); displaySelectedZones(propertyId, true); let propertyName = propertyId.replace("property-", ""); - updateProperty(propertyName, selectedZones, false); + updateProperty(propertyName, JSON.stringify(selectedZones), false); //FOR TEMPORARY STRING FOR TEST + //updateProperty(propertyName, selectedZones, false); //DIRECTLY FOR ARRY } function removeZoneFromZonesSelection(propertyId, zoneId) { let hiddenField = document.getElementById(propertyId); if(JSON.stringify(hiddenField.value) === '"undefined"') { hiddenField.value = "[]"; - } + } let selectedZones = JSON.parse(hiddenField.value); let index = selectedZones.indexOf(zoneId); if (index > -1) { @@ -3603,7 +3610,8 @@ function removeZoneFromZonesSelection(propertyId, zoneId) { hiddenField.value = JSON.stringify(selectedZones); displaySelectedZones(propertyId, true); let propertyName = propertyId.replace("property-", ""); - updateProperty(propertyName, selectedZones, false); + updateProperty(propertyName, JSON.stringify(selectedZones), false); //FOR TEMPORARY STRING FOR TEST + //updateProperty(propertyName, selectedZones, false); //DIRECTLY FOR ARRY } function displaySelectedZones(propertyId, isEditable) { @@ -3621,7 +3629,7 @@ function displaySelectedZones(propertyId, isEditable) { if (!isMultiple) { listedZoneInner += ""; } else { - listedZoneInner += ""; + listedZoneInner += ""; } } else { for ( i = 0; i < selectedZones.length; i++ ) { @@ -3637,10 +3645,9 @@ function displaySelectedZones(propertyId, isEditable) { } } if (isEditable) { - listedZoneInner += ""; + listedZoneInner += ""; } else { - listedZoneInner += ""; + listedZoneInner += ""; } } } @@ -3659,7 +3666,7 @@ function createZonesSelection(property, elProperty) { elProperty.className = "multipleZonesSelection"; let elInput = document.createElement('input'); elInput.setAttribute("id", elementID); - elInput.setAttribute("type", "hidden"); + elInput.setAttribute("type", "hidden"); // must be hidden ################################################################################# HEIL! ICITTE! elInput.className = "hiddenMultiZonesSelection"; let elZonesSelector = document.createElement('div'); @@ -3687,8 +3694,7 @@ function setZonesSelectionData(element, isEditable) { } zoneSelector += ""; } - zoneSelector += " "; - zoneSelector += ""; + zoneSelector += " "; zoneSelector += "
"; zoneSelectorContainer.innerHTML = zoneSelector; displaySelectedZones(element.id, isEditable); @@ -4102,14 +4108,18 @@ function handleEntitySelectionUpdate(selections, isPropertiesToolUpdate) { break; } case 'multipleZonesSelection': { - property.elInput.value = JSON.stringify(propertyValue); + if (propertyValue == ""){ //THIS IS A PATCH FOR TESTING WITh A STRING FIELDS + property.elInput.value = "[]"; //THIS IS A PATCH FOR TESTING WITh A STRING FIELDS + } else { //THIS IS A PATCH FOR TESTING WITh A STRING FIELDS + property.elInput.value = propertyValue; //JSON.stringify(propertyValue); //##### TO CHECK depending what type the value is.. expecting an array so it willbe manage as a string. + } //THIS IS A PATCH FOR TESTING WITh A STRING FIELDS if (lockedMultiValue.isMultiDiffValue || lockedMultiValue.value) { setZonesSelectionData(property.elInput, false); } else { setZonesSelectionData(property.elInput, true); } break; - } + } case 'icon': { property.elSpan.innerHTML = propertyData.icons[propertyValue]; property.elSpan.style.display = "inline-block"; From cc6fc40b0eaf5f5c267e189557bc6c1a77b89fd7 Mon Sep 17 00:00:00 2001 From: Alezia Kurdis <60075796+AleziaKurdis@users.noreply.github.com> Date: Mon, 27 Apr 2020 22:19:04 -0400 Subject: [PATCH 064/160] to avoid regression. --- .../html/js/entityProperties.js | 225 +++++++++++++++++- 1 file changed, 218 insertions(+), 7 deletions(-) diff --git a/scripts/system/create/entityProperties/html/js/entityProperties.js b/scripts/system/create/entityProperties/html/js/entityProperties.js index 0d15b8ece5..59755df122 100644 --- a/scripts/system/create/entityProperties/html/js/entityProperties.js +++ b/scripts/system/create/entityProperties/html/js/entityProperties.js @@ -2,7 +2,7 @@ // // Created by Ryan Huffman on 13 Nov 2014 // Copyright 2014 High Fidelity, Inc. -// Copyright 2020 Project Athena contributors. +// Copyright 2020 Vircadia contributors. // // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html @@ -67,11 +67,16 @@ const GROUPS = [ replaceID: "placeholder-property-id", multiDisplayMode: PROPERTY_MULTI_DISPLAY_MODE.COMMA_SEPARATED_VALUES, }, - { + /*{ label: "Description", type: "string", propertyID: "description", - }, + },*/ + { //THIS IS ONLY FOR THE TEST ########################################## + label: "Description", + type: "multipleZonesSelection", + propertyID: "description", + }, // END TEST ############################# { label: "Parent", type: "string", @@ -575,6 +580,12 @@ const GROUPS = [ type: "dropdown", options: { inherit: "Inherit", crowd: "Crowd", hero: "Hero" }, propertyID: "avatarPriority", + }, + { + label: "Screen-share", + type: "dropdown", + options: { inherit: "Inherit", disabled: "Off", enabled: "On" }, + propertyID: "screenshare", } ] }, @@ -1669,7 +1680,6 @@ const GROUPS_PER_TYPE = { ParticleEffect: [ 'base', 'particles', 'particles_emit', 'particles_size', 'particles_color', 'particles_behavior', 'particles_constraints', 'spatial', 'behavior', 'scripts', 'physics' ], PolyLine: [ 'base', 'spatial', 'behavior', 'scripts', 'collision', 'physics' ], - PolyLine: [ 'base', 'spatial', 'behavior', 'scripts', 'collision', 'physics' ], PolyVox: [ 'base', 'spatial', 'behavior', 'scripts', 'collision', 'physics' ], Grid: [ 'base', 'grid', 'spatial', 'behavior', 'scripts', 'physics' ], Multiple: [ 'base', 'spatial', 'behavior', 'scripts', 'collision', 'physics' ], @@ -1739,7 +1749,7 @@ let selectedEntityIDs = new Set(); let currentSelections = []; let createAppTooltip = new CreateAppTooltip(); let currentSpaceMode = PROPERTY_SPACE_MODE.LOCAL; - +let zonesList = []; function createElementFromHTML(htmlString) { let elTemplate = document.createElement('template'); @@ -1765,6 +1775,8 @@ function getPropertyInputElement(propertyID) { case 'textarea': case 'texture': return property.elInput; + case 'multipleZonesSelection': + return property.elInput; case 'number-draggable': return property.elNumber.elInput; case 'rect': @@ -1805,6 +1817,7 @@ function disableChildren(el, selector) { function enableProperties() { enableChildren(document.getElementById("properties-list"), ENABLE_DISABLE_SELECTOR); enableChildren(document, ".colpick"); + enableAllMultipleZoneSelector(); } function disableProperties() { @@ -1813,6 +1826,7 @@ function disableProperties() { for (let pickKey in colorPickers) { colorPickers[pickKey].colpickHide(); } + disableAllMultipleZoneSelector(); } function showPropertyElement(propertyID, show) { @@ -1887,6 +1901,12 @@ function resetProperties() { setTextareaScrolling(property.elInput); break; } + case 'multipleZonesSelection': { + property.elInput.classList.remove('multi-diff'); + property.elInput.value = "[]"; //################################## PROBABLY SOMETHING TO ADJUST HERE! + setZonesSelectionData(property.elInput, false); + break; + } case 'icon': { property.elSpan.style.display = "none"; break; @@ -3036,6 +3056,10 @@ function createProperty(propertyData, propertyElementID, propertyName, propertyI property.elInput = createTextareaProperty(property, elProperty); break; } + case 'multipleZonesSelection': { + property.elInput = createZonesSelection(property, elProperty); + break; + } case 'icon': { property.elSpan = createIconProperty(property, elProperty); break; @@ -3528,6 +3552,175 @@ function setTextareaScrolling(element) { element.setAttribute("scrolling", isScrolling ? "true" : "false"); } +/** + * ZONE SELECTOR FUNCTIONS + */ + +function enableAllMultipleZoneSelector() { + let allMultiZoneSelectors = document.querySelectorAll(".hiddenMultiZonesSelection"); + let i, propId; + for ( i = 0; i < allMultiZoneSelectors.length; i++ ) { + propId = allMultiZoneSelectors[i].id; + displaySelectedZones(propId, true); + } +} + +function disableAllMultipleZoneSelector() { + let allMultiZoneSelectors = document.querySelectorAll(".hiddenMultiZonesSelection"); + let i, propId; + for ( i = 0; i < allMultiZoneSelectors.length; i++ ) { + propId = allMultiZoneSelectors[i].id; + displaySelectedZones(propId, false); + } +} + +function requestZoneList() { + EventBridge.emitWebEvent(JSON.stringify({ + type: "zoneListRequest" + })); +} + +function addZoneToZonesSelection(propertyId) { + let hiddenField = document.getElementById(propertyId); + if(JSON.stringify(hiddenField.value) === '"undefined"') { + hiddenField.value = "[]"; + } + let selectedZones = JSON.parse(hiddenField.value); + let zoneToAdd = document.getElementById("zones-select-" + propertyId).value; + if (!selectedZones.includes(zoneToAdd)) { + selectedZones.push(zoneToAdd); + } + hiddenField.value = JSON.stringify(selectedZones); + displaySelectedZones(propertyId, true); + let propertyName = propertyId.replace("property-", ""); + updateProperty(propertyName, JSON.stringify(selectedZones), false); //FOR TEMPORARY STRING FOR TEST + //updateProperty(propertyName, selectedZones, false); //DIRECTLY FOR ARRY +} + +function removeZoneFromZonesSelection(propertyId, zoneId) { + let hiddenField = document.getElementById(propertyId); + if(JSON.stringify(hiddenField.value) === '"undefined"') { + hiddenField.value = "[]"; + } + let selectedZones = JSON.parse(hiddenField.value); + let index = selectedZones.indexOf(zoneId); + if (index > -1) { + selectedZones.splice(index, 1); + } + hiddenField.value = JSON.stringify(selectedZones); + displaySelectedZones(propertyId, true); + let propertyName = propertyId.replace("property-", ""); + updateProperty(propertyName, JSON.stringify(selectedZones), false); //FOR TEMPORARY STRING FOR TEST + //updateProperty(propertyName, selectedZones, false); //DIRECTLY FOR ARRY +} + +function displaySelectedZones(propertyId, isEditable) { + let i,j, name, listedZoneInner, hiddenData, isMultiple; + hiddenData = document.getElementById(propertyId).value; + if (JSON.stringify(hiddenData) === '"undefined"') { + isMultiple = true; + hiddenData = "[]"; + } else { + isMultiple = false; + } + let selectedZones = JSON.parse(hiddenData); + listedZoneInner = "
ValueNameDescription
Invite Steam friends to join you in High Fidelity.Invite Steam friends to join you in Vircadia.Display the High Fidelity home page on the system tablet.Display the Vircadia home page on the system tablet.
  
[ WARNING: Any changes will apply to all. ] 
[ WARNING: Any changes will apply to all ] 
" + name + ""; - listedZoneInner += "
" + name + "
" + name + " 
" + name + " 
"; + if (selectedZones.length === 0) { + if (!isMultiple) { + listedZoneInner += ""; + } else { + listedZoneInner += ""; + } + } else { + for ( i = 0; i < selectedZones.length; i++ ) { + name = "{ERROR: NOT FOUND}"; + for ( j = 0; j < zonesList.length; j++ ) { + if (selectedZones[i] === zonesList[j].id) { + if (zonesList[j].name !== "") { + name = zonesList[j].name; + } else { + name = zonesList[j].id; + } + break; + } + } + if (isEditable) { + listedZoneInner += ""; + } else { + listedZoneInner += ""; + } + } + } + listedZoneInner += "
  
[ WARNING: Any changes will apply to all ] 
" + name + "
" + name + " 
"; + document.getElementById("selected-zones-" + propertyId).innerHTML = listedZoneInner; + if (isEditable) { + document.getElementById("multiZoneSelTools-" + propertyId).style.display = "block"; + } else { + document.getElementById("multiZoneSelTools-" + propertyId).style.display = "none"; + } +} + +function createZonesSelection(property, elProperty) { + let elementID = property.elementID; + requestZoneList(); + elProperty.className = "multipleZonesSelection"; + let elInput = document.createElement('input'); + elInput.setAttribute("id", elementID); + elInput.setAttribute("type", "hidden"); // must be hidden ################################################################################# HEIL! ICITTE! + elInput.className = "hiddenMultiZonesSelection"; + + let elZonesSelector = document.createElement('div'); + elZonesSelector.setAttribute("id", "zones-selector-" + elementID); + + let elMultiDiff = document.createElement('span'); + elMultiDiff.className = "multi-diff"; + + elProperty.appendChild(elInput); + elProperty.appendChild(elZonesSelector); + elProperty.appendChild(elMultiDiff); + + return elInput; +} + +function setZonesSelectionData(element, isEditable) { + let zoneSelectorContainer = document.getElementById("zones-selector-" + element.id); + let zoneSelector = "
 
"; + zoneSelector += "
"; + zoneSelectorContainer.innerHTML = zoneSelector; + displaySelectedZones(element.id, isEditable); +} + +function updateAllZoneSelect() { + let allZoneSelects = document.querySelectorAll(".zoneSelect"); + let i, j, name, propId; + for ( i = 0; i < allZoneSelects.length; i++ ) { + allZoneSelects[i].options.length = 0; + for ( j = 0; j < zonesList.length; j++ ) { + if (zonesList[j].name === "") { + name = zonesList[j].id; + } else { + name = zonesList[j].name; + } + allZoneSelects[i].options[j] = new Option(name, zonesList[j].id, false , false); + } + propId = allZoneSelects[i].id.replace("zones-select-", ""); + if (document.getElementById("multiZoneSelTools-" + propId).style.display === "block") { + displaySelectedZones(propId, true); + } else { + displaySelectedZones(propId, false); + } + } +} /** * MATERIAL TARGET FUNCTIONS @@ -3701,7 +3894,9 @@ function handleEntitySelectionUpdate(selections, isPropertiesToolUpdate) { selectedEntityIDs = new Set(selections.map(selection => selection.id)); const multipleSelections = currentSelections.length > 1; const hasSelectedEntityChanged = !areSetsEqual(selectedEntityIDs, previouslySelectedEntityIDs); - + + requestZoneList(); + if (selections.length === 0) { deleteJSONEditor(); deleteJSONMaterialEditor(); @@ -3756,7 +3951,7 @@ function handleEntitySelectionUpdate(selections, isPropertiesToolUpdate) { } else { enableProperties(); disableSaveUserDataButton(); - disableSaveMaterialDataButton() + disableSaveMaterialDataButton(); } const certificateIDMultiValue = getMultiplePropertyValue('certificateID'); @@ -3912,6 +4107,19 @@ function handleEntitySelectionUpdate(selections, isPropertiesToolUpdate) { setTextareaScrolling(property.elInput); break; } + case 'multipleZonesSelection': { + if (propertyValue == ""){ //THIS IS A PATCH FOR TESTING WITh A STRING FIELDS + property.elInput.value = "[]"; //THIS IS A PATCH FOR TESTING WITh A STRING FIELDS + } else { //THIS IS A PATCH FOR TESTING WITh A STRING FIELDS + property.elInput.value = propertyValue; //JSON.stringify(propertyValue); //##### TO CHECK depending what type the value is.. expecting an array so it willbe manage as a string. + } //THIS IS A PATCH FOR TESTING WITh A STRING FIELDS + if (lockedMultiValue.isMultiDiffValue || lockedMultiValue.value) { + setZonesSelectionData(property.elInput, false); + } else { + setZonesSelectionData(property.elInput, true); + } + break; + } case 'icon': { property.elSpan.innerHTML = propertyData.icons[propertyValue]; property.elSpan.style.display = "inline-block"; @@ -4241,6 +4449,9 @@ function loaded() { if (data.entityID === getFirstSelectedID()) { setMaterialTargetData(data.materialTargetData); } + } else if (data.type === 'zoneListRequest') { + zonesList = data.zones; + updateAllZoneSelect(); } }); From c42734cba84d0dc931d921a53a899b493322bb20 Mon Sep 17 00:00:00 2001 From: Alezia Kurdis <60075796+AleziaKurdis@users.noreply.github.com> Date: Mon, 27 Apr 2020 22:47:49 -0400 Subject: [PATCH 065/160] adding screenshare with the real file --- .../html/js/entityProperties.js | 46 +++++++++---------- 1 file changed, 21 insertions(+), 25 deletions(-) diff --git a/scripts/system/create/entityProperties/html/js/entityProperties.js b/scripts/system/create/entityProperties/html/js/entityProperties.js index 59755df122..b634517d03 100644 --- a/scripts/system/create/entityProperties/html/js/entityProperties.js +++ b/scripts/system/create/entityProperties/html/js/entityProperties.js @@ -67,16 +67,11 @@ const GROUPS = [ replaceID: "placeholder-property-id", multiDisplayMode: PROPERTY_MULTI_DISPLAY_MODE.COMMA_SEPARATED_VALUES, }, - /*{ + { label: "Description", type: "string", propertyID: "description", - },*/ - { //THIS IS ONLY FOR THE TEST ########################################## - label: "Description", - type: "multipleZonesSelection", - propertyID: "description", - }, // END TEST ############################# + }, { label: "Parent", type: "string", @@ -120,6 +115,11 @@ const GROUPS = [ lines: "Wireframe", }, propertyID: "primitiveMode", + }, + { + label: "Render With Zones", + type: "multipleZonesSelection", + propertyID: "renderWithZones", } ] }, @@ -1903,7 +1903,7 @@ function resetProperties() { } case 'multipleZonesSelection': { property.elInput.classList.remove('multi-diff'); - property.elInput.value = "[]"; //################################## PROBABLY SOMETHING TO ADJUST HERE! + property.elInput.value = "[]"; setZonesSelectionData(property.elInput, false); break; } @@ -3588,20 +3588,19 @@ function addZoneToZonesSelection(propertyId) { let selectedZones = JSON.parse(hiddenField.value); let zoneToAdd = document.getElementById("zones-select-" + propertyId).value; if (!selectedZones.includes(zoneToAdd)) { - selectedZones.push(zoneToAdd); + selectedZones.push(zoneToAdd); } hiddenField.value = JSON.stringify(selectedZones); displaySelectedZones(propertyId, true); let propertyName = propertyId.replace("property-", ""); - updateProperty(propertyName, JSON.stringify(selectedZones), false); //FOR TEMPORARY STRING FOR TEST - //updateProperty(propertyName, selectedZones, false); //DIRECTLY FOR ARRY + updateProperty(propertyName, selectedZones, false); } function removeZoneFromZonesSelection(propertyId, zoneId) { let hiddenField = document.getElementById(propertyId); if(JSON.stringify(hiddenField.value) === '"undefined"') { hiddenField.value = "[]"; - } + } let selectedZones = JSON.parse(hiddenField.value); let index = selectedZones.indexOf(zoneId); if (index > -1) { @@ -3610,8 +3609,7 @@ function removeZoneFromZonesSelection(propertyId, zoneId) { hiddenField.value = JSON.stringify(selectedZones); displaySelectedZones(propertyId, true); let propertyName = propertyId.replace("property-", ""); - updateProperty(propertyName, JSON.stringify(selectedZones), false); //FOR TEMPORARY STRING FOR TEST - //updateProperty(propertyName, selectedZones, false); //DIRECTLY FOR ARRY + updateProperty(propertyName, selectedZones, false); } function displaySelectedZones(propertyId, isEditable) { @@ -3629,7 +3627,7 @@ function displaySelectedZones(propertyId, isEditable) { if (!isMultiple) { listedZoneInner += "  "; } else { - listedZoneInner += "[ WARNING: Any changes will apply to all ] "; + listedZoneInner += "[ WARNING: Any changes will apply to all. ] "; } } else { for ( i = 0; i < selectedZones.length; i++ ) { @@ -3645,9 +3643,10 @@ function displaySelectedZones(propertyId, isEditable) { } } if (isEditable) { - listedZoneInner += "" + name + ""; + listedZoneInner += "" + name + ""; + listedZoneInner += ""; } else { - listedZoneInner += "" + name + " "; + listedZoneInner += "" + name + " "; } } } @@ -3666,7 +3665,7 @@ function createZonesSelection(property, elProperty) { elProperty.className = "multipleZonesSelection"; let elInput = document.createElement('input'); elInput.setAttribute("id", elementID); - elInput.setAttribute("type", "hidden"); // must be hidden ################################################################################# HEIL! ICITTE! + elInput.setAttribute("type", "hidden"); elInput.className = "hiddenMultiZonesSelection"; let elZonesSelector = document.createElement('div'); @@ -3694,7 +3693,8 @@ function setZonesSelectionData(element, isEditable) { } zoneSelector += ""; } - zoneSelector += " "; + zoneSelector += " "; + zoneSelector += ""; zoneSelector += "
"; zoneSelectorContainer.innerHTML = zoneSelector; displaySelectedZones(element.id, isEditable); @@ -4108,18 +4108,14 @@ function handleEntitySelectionUpdate(selections, isPropertiesToolUpdate) { break; } case 'multipleZonesSelection': { - if (propertyValue == ""){ //THIS IS A PATCH FOR TESTING WITh A STRING FIELDS - property.elInput.value = "[]"; //THIS IS A PATCH FOR TESTING WITh A STRING FIELDS - } else { //THIS IS A PATCH FOR TESTING WITh A STRING FIELDS - property.elInput.value = propertyValue; //JSON.stringify(propertyValue); //##### TO CHECK depending what type the value is.. expecting an array so it willbe manage as a string. - } //THIS IS A PATCH FOR TESTING WITh A STRING FIELDS + property.elInput.value = JSON.stringify(propertyValue); if (lockedMultiValue.isMultiDiffValue || lockedMultiValue.value) { setZonesSelectionData(property.elInput, false); } else { setZonesSelectionData(property.elInput, true); } break; - } + } case 'icon': { property.elSpan.innerHTML = propertyData.icons[propertyValue]; property.elSpan.style.display = "inline-block"; From 8c1d80d49581e8fc8950ffcab9fc66c72c84047b Mon Sep 17 00:00:00 2001 From: Alezia Kurdis <60075796+AleziaKurdis@users.noreply.github.com> Date: Mon, 27 Apr 2020 22:48:47 -0400 Subject: [PATCH 066/160] To really avoid a regression --- .../html/js/entityProperties.js | 46 +++++++++---------- 1 file changed, 21 insertions(+), 25 deletions(-) diff --git a/scripts/system/create/entityProperties/html/js/entityProperties.js b/scripts/system/create/entityProperties/html/js/entityProperties.js index 59755df122..b634517d03 100644 --- a/scripts/system/create/entityProperties/html/js/entityProperties.js +++ b/scripts/system/create/entityProperties/html/js/entityProperties.js @@ -67,16 +67,11 @@ const GROUPS = [ replaceID: "placeholder-property-id", multiDisplayMode: PROPERTY_MULTI_DISPLAY_MODE.COMMA_SEPARATED_VALUES, }, - /*{ + { label: "Description", type: "string", propertyID: "description", - },*/ - { //THIS IS ONLY FOR THE TEST ########################################## - label: "Description", - type: "multipleZonesSelection", - propertyID: "description", - }, // END TEST ############################# + }, { label: "Parent", type: "string", @@ -120,6 +115,11 @@ const GROUPS = [ lines: "Wireframe", }, propertyID: "primitiveMode", + }, + { + label: "Render With Zones", + type: "multipleZonesSelection", + propertyID: "renderWithZones", } ] }, @@ -1903,7 +1903,7 @@ function resetProperties() { } case 'multipleZonesSelection': { property.elInput.classList.remove('multi-diff'); - property.elInput.value = "[]"; //################################## PROBABLY SOMETHING TO ADJUST HERE! + property.elInput.value = "[]"; setZonesSelectionData(property.elInput, false); break; } @@ -3588,20 +3588,19 @@ function addZoneToZonesSelection(propertyId) { let selectedZones = JSON.parse(hiddenField.value); let zoneToAdd = document.getElementById("zones-select-" + propertyId).value; if (!selectedZones.includes(zoneToAdd)) { - selectedZones.push(zoneToAdd); + selectedZones.push(zoneToAdd); } hiddenField.value = JSON.stringify(selectedZones); displaySelectedZones(propertyId, true); let propertyName = propertyId.replace("property-", ""); - updateProperty(propertyName, JSON.stringify(selectedZones), false); //FOR TEMPORARY STRING FOR TEST - //updateProperty(propertyName, selectedZones, false); //DIRECTLY FOR ARRY + updateProperty(propertyName, selectedZones, false); } function removeZoneFromZonesSelection(propertyId, zoneId) { let hiddenField = document.getElementById(propertyId); if(JSON.stringify(hiddenField.value) === '"undefined"') { hiddenField.value = "[]"; - } + } let selectedZones = JSON.parse(hiddenField.value); let index = selectedZones.indexOf(zoneId); if (index > -1) { @@ -3610,8 +3609,7 @@ function removeZoneFromZonesSelection(propertyId, zoneId) { hiddenField.value = JSON.stringify(selectedZones); displaySelectedZones(propertyId, true); let propertyName = propertyId.replace("property-", ""); - updateProperty(propertyName, JSON.stringify(selectedZones), false); //FOR TEMPORARY STRING FOR TEST - //updateProperty(propertyName, selectedZones, false); //DIRECTLY FOR ARRY + updateProperty(propertyName, selectedZones, false); } function displaySelectedZones(propertyId, isEditable) { @@ -3629,7 +3627,7 @@ function displaySelectedZones(propertyId, isEditable) { if (!isMultiple) { listedZoneInner += "  "; } else { - listedZoneInner += "[ WARNING: Any changes will apply to all ] "; + listedZoneInner += "[ WARNING: Any changes will apply to all. ] "; } } else { for ( i = 0; i < selectedZones.length; i++ ) { @@ -3645,9 +3643,10 @@ function displaySelectedZones(propertyId, isEditable) { } } if (isEditable) { - listedZoneInner += "" + name + ""; + listedZoneInner += "" + name + ""; + listedZoneInner += ""; } else { - listedZoneInner += "" + name + " "; + listedZoneInner += "" + name + " "; } } } @@ -3666,7 +3665,7 @@ function createZonesSelection(property, elProperty) { elProperty.className = "multipleZonesSelection"; let elInput = document.createElement('input'); elInput.setAttribute("id", elementID); - elInput.setAttribute("type", "hidden"); // must be hidden ################################################################################# HEIL! ICITTE! + elInput.setAttribute("type", "hidden"); elInput.className = "hiddenMultiZonesSelection"; let elZonesSelector = document.createElement('div'); @@ -3694,7 +3693,8 @@ function setZonesSelectionData(element, isEditable) { } zoneSelector += ""; } - zoneSelector += " "; + zoneSelector += " "; + zoneSelector += ""; zoneSelector += "
"; zoneSelectorContainer.innerHTML = zoneSelector; displaySelectedZones(element.id, isEditable); @@ -4108,18 +4108,14 @@ function handleEntitySelectionUpdate(selections, isPropertiesToolUpdate) { break; } case 'multipleZonesSelection': { - if (propertyValue == ""){ //THIS IS A PATCH FOR TESTING WITh A STRING FIELDS - property.elInput.value = "[]"; //THIS IS A PATCH FOR TESTING WITh A STRING FIELDS - } else { //THIS IS A PATCH FOR TESTING WITh A STRING FIELDS - property.elInput.value = propertyValue; //JSON.stringify(propertyValue); //##### TO CHECK depending what type the value is.. expecting an array so it willbe manage as a string. - } //THIS IS A PATCH FOR TESTING WITh A STRING FIELDS + property.elInput.value = JSON.stringify(propertyValue); if (lockedMultiValue.isMultiDiffValue || lockedMultiValue.value) { setZonesSelectionData(property.elInput, false); } else { setZonesSelectionData(property.elInput, true); } break; - } + } case 'icon': { property.elSpan.innerHTML = propertyData.icons[propertyValue]; property.elSpan.style.display = "inline-block"; From 5c7e6446d036797e95e0c31071c7c4c28d2dc879 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Mon, 4 May 2020 21:03:13 +1200 Subject: [PATCH 067/160] Update to build using latest OpenVR SDK package --- cmake/ports/openvr/portfile.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/ports/openvr/portfile.cmake b/cmake/ports/openvr/portfile.cmake index 5e4211907d..b91bdd1d54 100644 --- a/cmake/ports/openvr/portfile.cmake +++ b/cmake/ports/openvr/portfile.cmake @@ -3,8 +3,8 @@ include(vcpkg_common_functions) vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH REPO ValveSoftware/openvr - REF v1.0.16 - SHA512 967356563ba4232da5361510c7519d3058e09eced4571aadc00d8a75ab1f299a0aebda2b0b10b0ffb6c6a443fd718634d0c0103964e289961449c93e8d7b9d02 + REF v1.11.11 + SHA512 25bddb0e82eea091fe5101d0d3de1de7bb81b4504adc0c8d8e687d2502c0167bc5a11e68bc343d7563fb4db7c917e9d0e2ea99bc1d8016d479874b0c6bd7f121 HEAD_REF master ) From da2aefb6b21533ac9f726508611a1dd46a7febf6 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Mon, 4 May 2020 21:04:17 +1200 Subject: [PATCH 068/160] There are no longer so-called "high quality" overlays --- plugins/openvr/src/OpenVrHelpers.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/plugins/openvr/src/OpenVrHelpers.cpp b/plugins/openvr/src/OpenVrHelpers.cpp index ce60719d67..c9511e22ae 100644 --- a/plugins/openvr/src/OpenVrHelpers.cpp +++ b/plugins/openvr/src/OpenVrHelpers.cpp @@ -413,7 +413,6 @@ void showMinSpecWarning() { vrSystem->ResetSeatedZeroPose(); QString imagePath = PathUtils::resourcesPath() + "/images/steam-min-spec-failed.png"; vrOverlay->SetOverlayFromFile(minSpecFailedOverlay, imagePath.toLocal8Bit().toStdString().c_str()); - vrOverlay->SetHighQualityOverlay(minSpecFailedOverlay); vrOverlay->SetOverlayWidthInMeters(minSpecFailedOverlay, 1.4f); vrOverlay->SetOverlayInputMethod(minSpecFailedOverlay, vr::VROverlayInputMethod_Mouse); vrOverlay->ShowOverlay(minSpecFailedOverlay); From 488cea43cdec8af1af255d78f057009f6cc39fe4 Mon Sep 17 00:00:00 2001 From: Thijs Wenker Date: Mon, 4 May 2020 11:28:35 +0200 Subject: [PATCH 069/160] disk usage github actions, for debugging linux build issue --- .github/workflows/pr_build.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/pr_build.yml b/.github/workflows/pr_build.yml index 57d32741ca..f5104dbe43 100644 --- a/.github/workflows/pr_build.yml +++ b/.github/workflows/pr_build.yml @@ -121,6 +121,13 @@ jobs: working-directory: ${{runner.workspace}}/build shell: bash run: cmake --build . --config $BUILD_TYPE --target package $CMAKE_BUILD_EXTRA + - name: Output system stats + if: ${{ always() }} + working-directory: ${{runner.workspace}}/build + shell: bash + run: | + echo "Disk usage:" + df -h - name: Output Installer Logs if: failure() && matrix.os == 'windows-latest' shell: bash From 748439f055bbfc46078903b56be97398d1e3d44a Mon Sep 17 00:00:00 2001 From: Thijs Wenker Date: Wed, 6 May 2020 23:20:21 +0200 Subject: [PATCH 070/160] add retry command for packaging, since linux screenshare has about a 50% chance to fail a build --- .github/workflows/pr_build.yml | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/.github/workflows/pr_build.yml b/.github/workflows/pr_build.yml index f5104dbe43..4b3d66da50 100644 --- a/.github/workflows/pr_build.yml +++ b/.github/workflows/pr_build.yml @@ -120,7 +120,30 @@ jobs: - name: Build Installer working-directory: ${{runner.workspace}}/build shell: bash - run: cmake --build . --config $BUILD_TYPE --target package $CMAKE_BUILD_EXTRA + run: | + echo "Retry code from https://unix.stackexchange.com/a/137639" + function fail { + echo $1 >&2 + exit 1 + } + + function retry { + local n=1 + local max=5 + local delay=15 + while true; do + "$@" && break || { + if [[ $n -lt $max ]]; then + ((n++)) + echo "Command failed. Attempt $n/$max:" + sleep $delay; + else + fail "The command has failed after $n attempts." + fi + } + done + } + retry cmake --build . --config $BUILD_TYPE --target package $CMAKE_BUILD_EXTRA - name: Output system stats if: ${{ always() }} working-directory: ${{runner.workspace}}/build From a94ed7f6c1b0601b6adc32a8c636f22631dd9b94 Mon Sep 17 00:00:00 2001 From: Alezia Kurdis <60075796+AleziaKurdis@users.noreply.github.com> Date: Wed, 6 May 2020 23:37:36 -0400 Subject: [PATCH 071/160] Minor Code Adjustments Minor Code Adjustments --- .../html/js/entityProperties.js | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/scripts/system/create/entityProperties/html/js/entityProperties.js b/scripts/system/create/entityProperties/html/js/entityProperties.js index b634517d03..8c041d2563 100644 --- a/scripts/system/create/entityProperties/html/js/entityProperties.js +++ b/scripts/system/create/entityProperties/html/js/entityProperties.js @@ -115,12 +115,12 @@ const GROUPS = [ lines: "Wireframe", }, propertyID: "primitiveMode", - }, + }/*, { label: "Render With Zones", type: "multipleZonesSelection", propertyID: "renderWithZones", - } + }*/ ] }, { @@ -3559,7 +3559,7 @@ function setTextareaScrolling(element) { function enableAllMultipleZoneSelector() { let allMultiZoneSelectors = document.querySelectorAll(".hiddenMultiZonesSelection"); let i, propId; - for ( i = 0; i < allMultiZoneSelectors.length; i++ ) { + for (i = 0; i < allMultiZoneSelectors.length; i++) { propId = allMultiZoneSelectors[i].id; displaySelectedZones(propId, true); } @@ -3568,7 +3568,7 @@ function enableAllMultipleZoneSelector() { function disableAllMultipleZoneSelector() { let allMultiZoneSelectors = document.querySelectorAll(".hiddenMultiZonesSelection"); let i, propId; - for ( i = 0; i < allMultiZoneSelectors.length; i++ ) { + for (i = 0; i < allMultiZoneSelectors.length; i++) { propId = allMultiZoneSelectors[i].id; displaySelectedZones(propId, false); } @@ -3582,7 +3582,7 @@ function requestZoneList() { function addZoneToZonesSelection(propertyId) { let hiddenField = document.getElementById(propertyId); - if(JSON.stringify(hiddenField.value) === '"undefined"') { + if (JSON.stringify(hiddenField.value) === '"undefined"') { hiddenField.value = "[]"; } let selectedZones = JSON.parse(hiddenField.value); @@ -3598,7 +3598,7 @@ function addZoneToZonesSelection(propertyId) { function removeZoneFromZonesSelection(propertyId, zoneId) { let hiddenField = document.getElementById(propertyId); - if(JSON.stringify(hiddenField.value) === '"undefined"') { + if (JSON.stringify(hiddenField.value) === '"undefined"') { hiddenField.value = "[]"; } let selectedZones = JSON.parse(hiddenField.value); @@ -3630,9 +3630,9 @@ function displaySelectedZones(propertyId, isEditable) { listedZoneInner += "[ WARNING: Any changes will apply to all. ] "; } } else { - for ( i = 0; i < selectedZones.length; i++ ) { + for (i = 0; i < selectedZones.length; i++) { name = "{ERROR: NOT FOUND}"; - for ( j = 0; j < zonesList.length; j++ ) { + for (j = 0; j < zonesList.length; j++) { if (selectedZones[i] === zonesList[j].id) { if (zonesList[j].name !== "") { name = zonesList[j].name; @@ -3685,7 +3685,7 @@ function setZonesSelectionData(element, isEditable) { let zoneSelectorContainer = document.getElementById("zones-selector-" + element.id); let zoneSelector = "
"; let i, name; - for ( i = 0; i < zonesList.length; i++ ) { + for (i = 0; i < zonesList.length; i++) { if (zonesList[i].name === "") { name = zonesList[i].id; } else { @@ -3703,9 +3703,9 @@ function setZonesSelectionData(element, isEditable) { function updateAllZoneSelect() { let allZoneSelects = document.querySelectorAll(".zoneSelect"); let i, j, name, propId; - for ( i = 0; i < allZoneSelects.length; i++ ) { + for (i = 0; i < allZoneSelects.length; i++) { allZoneSelects[i].options.length = 0; - for ( j = 0; j < zonesList.length; j++ ) { + for (j = 0; j < zonesList.length; j++) { if (zonesList[j].name === "") { name = zonesList[j].id; } else { From f83ea58a10cc683f4e92c38618c2876413fdfe84 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Thu, 7 May 2020 15:42:30 +1200 Subject: [PATCH 073/160] Fix erroneous hard-coded audio setting string --- plugins/openvr/src/OpenVrHelpers.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/openvr/src/OpenVrHelpers.cpp b/plugins/openvr/src/OpenVrHelpers.cpp index c9511e22ae..e55e7feaf4 100644 --- a/plugins/openvr/src/OpenVrHelpers.cpp +++ b/plugins/openvr/src/OpenVrHelpers.cpp @@ -100,7 +100,7 @@ QString getVrSettingString(const char* section, const char* setting) { 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); + vrSettings->GetString(vr::k_pch_audio_Section, setting, BUFFER, BUFFER_SIZE, &error); if (error == vr::VRSettingsError_None) { result = BUFFER; } From be8d97cbf70ba3b2177fac8478e23c266810e20a Mon Sep 17 00:00:00 2001 From: David Rowe Date: Thu, 7 May 2020 16:05:49 +1200 Subject: [PATCH 074/160] Use new audio setting API values --- plugins/openvr/src/OpenVrDisplayPlugin.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/plugins/openvr/src/OpenVrDisplayPlugin.cpp b/plugins/openvr/src/OpenVrDisplayPlugin.cpp index 78b462369b..7691d2ab70 100644 --- a/plugins/openvr/src/OpenVrDisplayPlugin.cpp +++ b/plugins/openvr/src/OpenVrDisplayPlugin.cpp @@ -738,26 +738,28 @@ int OpenVrDisplayPlugin::getRequiredThreadCount() const { } QString OpenVrDisplayPlugin::getPreferredAudioInDevice() const { - QString device = getVrSettingString(vr::k_pch_audio_Section, vr::k_pch_audio_OnPlaybackDevice_String); + QString device = getVrSettingString(vr::k_pch_audio_Section, vr::k_pch_audio_RecordingDeviceOverride_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()); + // FIXME: This may not be necessary if vr::k_pch_audio_RecordingDeviceOverride_StringName is used above. device = AudioClient::getWinDeviceName(deviceW.data()); } return device; } QString OpenVrDisplayPlugin::getPreferredAudioOutDevice() const { - QString device = getVrSettingString(vr::k_pch_audio_Section, vr::k_pch_audio_OnRecordDevice_String); + QString device = getVrSettingString(vr::k_pch_audio_Section, vr::k_pch_audio_PlaybackDeviceOverride_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()); + // FIXME: This may not be necessary if vr::k_pch_audio_PlaybackDeviceOverride_StringName is used above. device = AudioClient::getWinDeviceName(deviceW.data()); } return device; From aad54a0580ff2ba8a6eaae9ba819bf625383a0c1 Mon Sep 17 00:00:00 2001 From: Heather Anderson Date: Wed, 1 Apr 2020 02:44:52 -0700 Subject: [PATCH 075/160] renaming more of the annotations to be in a form Sentry is more likely to understand --- interface/src/Application.cpp | 6 +++--- interface/src/CrashHandler_Crashpad.cpp | 7 +++---- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index a73281e569..7bb845acb1 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -1083,8 +1083,8 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo { // identify gpu as early as possible to help identify OpenGL initialization errors. auto gpuIdent = GPUIdent::getInstance(); - setCrashAnnotation("gpu_name", gpuIdent->getName().toStdString()); - setCrashAnnotation("gpu_driver", gpuIdent->getDriver().toStdString()); + setCrashAnnotation("sentry[contexts][gpu][name]", gpuIdent->getName().toStdString()); + setCrashAnnotation("sentry[contexts][gpu][version]", gpuIdent->getDriver().toStdString()); setCrashAnnotation("gpu_memory", std::to_string(gpuIdent->getMemory())); } @@ -7054,7 +7054,7 @@ void Application::updateWindowTitle() const { nodeList->getDomainHandler().isConnected() ? "" : " (NOT CONNECTED)"; QString username = accountManager->getAccountInfo().getUsername(); - setCrashAnnotation("username", username.toStdString()); + setCrashAnnotation("sentry[user][username]", username.toStdString()); QString currentPlaceName; if (isServerlessMode()) { diff --git a/interface/src/CrashHandler_Crashpad.cpp b/interface/src/CrashHandler_Crashpad.cpp index d1b5103990..900a296955 100644 --- a/interface/src/CrashHandler_Crashpad.cpp +++ b/interface/src/CrashHandler_Crashpad.cpp @@ -84,10 +84,9 @@ bool startCrashHandler(std::string appPath) { std::vector arguments; std::map annotations; - annotations["token"] = BACKTRACE_TOKEN; - annotations["format"] = "minidump"; - annotations["version"] = BuildInfo::VERSION.toStdString(); - annotations["build_number"] = BuildInfo::BUILD_NUMBER.toStdString(); + annotations["sentry[release]"] = BACKTRACE_TOKEN; + annotations["sentry[contexts][app][app_version]"] = BuildInfo::VERSION.toStdString(); + annotations["sentry[contexts][app][app_build]"] = BuildInfo::BUILD_NUMBER.toStdString(); annotations["build_type"] = BuildInfo::BUILD_TYPE_STRING.toStdString(); auto machineFingerPrint = uuidStringWithoutCurlyBraces(FingerprintUtils::getMachineFingerprint()); From 91e177f68b4e4796f996f66e5e59cf451071e289 Mon Sep 17 00:00:00 2001 From: HifiExperiments Date: Thu, 7 May 2020 13:23:22 -0700 Subject: [PATCH 076/160] add spaces after fors --- libraries/render-utils/src/Model.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libraries/render-utils/src/Model.cpp b/libraries/render-utils/src/Model.cpp index bc7703290c..1b7e1ebfb6 100644 --- a/libraries/render-utils/src/Model.cpp +++ b/libraries/render-utils/src/Model.cpp @@ -893,7 +893,7 @@ void Model::updateRenderItemsKey(const render::ScenePointer& scene) { } auto renderItemsKey = _renderItemKeyGlobalFlags; render::Transaction transaction; - for(auto itemID: _modelMeshRenderItemIDs) { + for (auto itemID: _modelMeshRenderItemIDs) { transaction.updateItem(itemID, [renderItemsKey](ModelMeshPartPayload& data) { data.updateKey(renderItemsKey); }); @@ -979,7 +979,7 @@ void Model::setCullWithParent(bool cullWithParent) { render::Transaction transaction; auto renderItemsKey = _renderItemKeyGlobalFlags; - for(auto item : _modelMeshRenderItemIDs) { + for (auto item : _modelMeshRenderItemIDs) { transaction.updateItem(item, [cullWithParent, renderItemsKey](ModelMeshPartPayload& data) { data.setCullWithParent(cullWithParent); data.updateKey(renderItemsKey); @@ -991,7 +991,7 @@ void Model::setCullWithParent(bool cullWithParent) { void Model::setRenderWithZones(const QVector& renderWithZones) { render::Transaction transaction; - for(auto item : _modelMeshRenderItemIDs) { + for (auto item : _modelMeshRenderItemIDs) { transaction.updateItem(item, [renderWithZones](ModelMeshPartPayload& data) { data.setRenderWithZones(renderWithZones); }); From b9d4791af2dc6b9de4624da61f3fe61a774cb95c Mon Sep 17 00:00:00 2001 From: Thijs Wenker Date: Fri, 8 May 2020 00:55:43 +0200 Subject: [PATCH 077/160] fix CR style error --- hifi_vcpkg.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hifi_vcpkg.py b/hifi_vcpkg.py index 569bd49545..1b9976da6e 100644 --- a/hifi_vcpkg.py +++ b/hifi_vcpkg.py @@ -83,7 +83,7 @@ endif() self.bootstrapEnv = os.environ.copy() self.buildEnv = os.environ.copy() self.prebuiltArchive = None - usePrebuilt = False + usePrebuilt = False # usePrebuild Disabled, to re-enabled using the prebuilt archives for GitHub action builds uncomment the following line: # usePrebuilt = ('CI_BUILD' in os.environ) and os.environ["CI_BUILD"] == "Github" and (not self.noClean) @@ -248,7 +248,7 @@ endif() print("Installing host tools") if (self.vcpkgBuildType): self.copyTripletForBuildType(self.hostTriplet) - self.run(['install', '--triplet', self.getTripletWithBuildType(self.hostTriplet), 'hifi-host-tools']) + self.run(['install', '--triplet', self.getTripletWithBuildType(self.hostTriplet), 'hifi-host-tools']) # If not android, install the hifi-client-deps libraries if not self.args.android: From 430d748b295cd932b9e5f0a79153428223ce331f Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Thu, 7 May 2020 21:33:20 -0400 Subject: [PATCH 078/160] Bump packet version size up. --- libraries/networking/src/udt/PacketHeaders.h | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/libraries/networking/src/udt/PacketHeaders.h b/libraries/networking/src/udt/PacketHeaders.h index 5fd1e89fc0..bfcf806843 100644 --- a/libraries/networking/src/udt/PacketHeaders.h +++ b/libraries/networking/src/udt/PacketHeaders.h @@ -212,10 +212,11 @@ using PacketType = PacketTypeEnum::Value; const int NUM_BYTES_MD5_HASH = 16; -typedef char PacketVersion; +// NOTE: There is a max limit of 255, hopefully we have a better way to manage this by then. +typedef uint8_t PacketVersion; PacketVersion versionForPacketType(PacketType packetType); -QByteArray protocolVersionsSignature(); /// returns a unqiue signature for all the current protocols +QByteArray protocolVersionsSignature(); /// returns a unique signature for all the current protocols QString protocolVersionsSignatureBase64(); #if (PR_BUILD || DEV_BUILD) @@ -226,7 +227,7 @@ uint qHash(const PacketType& key, uint seed); QDebug operator<<(QDebug debug, const PacketType& type); // Due to the different legacy behaviour, we need special processing for domains that were created before -// the zone inheritance modes were added. These have version numbers up to 80 +// the zone inheritance modes were added. These have version numbers up to 80. enum class EntityVersion : PacketVersion { StrokeColorProperty = 0, HasDynamicOwnershipTests, From 67578a361e752b529f469097f39dbe2529eb9dba Mon Sep 17 00:00:00 2001 From: Alezia Kurdis <60075796+AleziaKurdis@users.noreply.github.com> Date: Thu, 7 May 2020 22:44:35 -0400 Subject: [PATCH 079/160] Merged of "screenshare" and requested changes. 1- Update some tooltips (changed "Set the" for "The") for Lines: 9, 18, 24, 215, 325, 329, 332, 335, 611 2- Include merge for conflict (not detected by Github) for "screenshare" attribute 3- Include tooltip for "renderWithZones" attribute (to avoid another rework on this file for PR#274) This includes some additional tooltip update done after PR215 for PR274 (no impact on functional) --- .../create/assets/data/createAppTooltips.json | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/scripts/system/create/assets/data/createAppTooltips.json b/scripts/system/create/assets/data/createAppTooltips.json index 68b7cfe59a..953f0b8f51 100644 --- a/scripts/system/create/assets/data/createAppTooltips.json +++ b/scripts/system/create/assets/data/createAppTooltips.json @@ -6,7 +6,7 @@ "tooltip": "The color of this entity." }, "shapeAlpha": { - "tooltip": "Set the opacity of the entity between 0.0 fully transparent and 1.0 completely opaque." + "tooltip": "The opacity of the entity between 0.0 fully transparent and 1.0 completely opaque." }, "text": { "tooltip": "The text to display on the entity." @@ -15,13 +15,13 @@ "tooltip": "The color of the text." }, "textAlpha": { - "tooltip": "Set the opacity of the text between 0.0 fully transparent and 1.0 completely opaque." + "tooltip": "The opacity of the text between 0.0 fully transparent and 1.0 completely opaque." }, "backgroundColor": { "tooltip": "The color of the background." }, "backgroundAlpha": { - "tooltip": "Set the opacity of the background between 0.0 fully transparent and 1.0 completely opaque." + "tooltip": "The opacity of the background between 0.0 fully transparent and 1.0 completely opaque." }, "lineHeight": { "tooltip": "The height of each line of text. This determines the size of the text." @@ -162,6 +162,9 @@ "avatarPriority": { "tooltip": "Alter Avatars' update priorities." }, + "screenshare": { + "tooltip": "Enable screen-sharing within this zone" + }, "modelURL": { "tooltip": "A mesh model from an FBX or OBJ file." }, @@ -212,7 +215,7 @@ "jsPropertyName": "color" }, "imageAlpha": { - "tooltip": "Set the opacity of the image between 0.0 fully transparent and 1.0 completely opaque." + "tooltip": "The opacity of the image between 0.0 fully transparent and 1.0 completely opaque." }, "emissive": { "tooltip": "If enabled, the image will display at full brightness." @@ -319,17 +322,17 @@ "tooltip": "The spread in color that each particle is given, resulting in a variety of colors." }, "particleAlphaTriple": { - "tooltip": "Set the opacity of the each particle between 0.0 fully transparent and 1.0 completely opaque.", + "tooltip": "The opacity of each particle between 0.0 fully transparent and 1.0 completely opaque.", "jsPropertyName": "alpha" }, "alpha": { - "tooltip": "Set the opacity of the each particle between 0.0 fully transparent and 1.0 completely opaque." + "tooltip": "The opacity of each particle between 0.0 fully transparent and 1.0 completely opaque." }, "alphaStart": { - "tooltip": "Set the initial opacity level of the each particle between 0.0 fully transparent and 1.0 completely opaque." + "tooltip": "The initial opacity level of each particle between 0.0 fully transparent and 1.0 completely opaque." }, "alphaFinish": { - "tooltip": "Set the final opacity level of the each particle between 0.0 fully transparent and 1.0 completely opaque." + "tooltip": "The final opacity level of each particle between 0.0 fully transparent and 1.0 completely opaque." }, "alphaSpread": { "tooltip": "The spread in opacity that each particle is given, resulting in a variety of opacity levels." @@ -595,6 +598,9 @@ "primitiveMode": { "tooltip": "The mode in which to draw an entity, either \"Solid\" or \"Wireframe\"." }, + "renderWithZones": { + "tooltip": "If set, this entity will only render when your avatar is inside of a zone in this list." + }, "groupCulled": { "tooltip": "If false, individual pieces of the entity may be culled by the render engine. If true, either the entire entity will be culled, or it won't at all." }, @@ -602,7 +608,7 @@ "tooltip": "The tint of the web entity." }, "webAlpha": { - "tooltip": "Set the opacity of the web entity between 0.0 fully transparent and 1.0 completely opaque." + "tooltip": "The opacity of the web entity between 0.0 fully transparent and 1.0 completely opaque." }, "maxFPS": { "tooltip": "The FPS at which to render the web entity. Higher values will have a performance impact." From 95562f7e230b7fa241169860289b38809e8783bc Mon Sep 17 00:00:00 2001 From: Alezia Kurdis <60075796+AleziaKurdis@users.noreply.github.com> Date: Thu, 7 May 2020 22:46:35 -0400 Subject: [PATCH 080/160] Merged of "screenshare" and requested changes. 1- Update some tooltips (changed "Set the" for "The") for Lines: 9, 18, 24, 215, 325, 329, 332, 335, 611 2- Include merge for conflict (not detected by Github) for "screenshare" attribute --- .../create/assets/data/createAppTooltips.json | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/scripts/system/create/assets/data/createAppTooltips.json b/scripts/system/create/assets/data/createAppTooltips.json index 94d8fe1ab6..953f0b8f51 100644 --- a/scripts/system/create/assets/data/createAppTooltips.json +++ b/scripts/system/create/assets/data/createAppTooltips.json @@ -6,7 +6,7 @@ "tooltip": "The color of this entity." }, "shapeAlpha": { - "tooltip": "Set the opacity of the entity between 0.0 fully transparent and 1.0 completely opaque." + "tooltip": "The opacity of the entity between 0.0 fully transparent and 1.0 completely opaque." }, "text": { "tooltip": "The text to display on the entity." @@ -15,13 +15,13 @@ "tooltip": "The color of the text." }, "textAlpha": { - "tooltip": "Set the opacity of the text between 0.0 fully transparent and 1.0 completely opaque." + "tooltip": "The opacity of the text between 0.0 fully transparent and 1.0 completely opaque." }, "backgroundColor": { "tooltip": "The color of the background." }, "backgroundAlpha": { - "tooltip": "Set the opacity of the background between 0.0 fully transparent and 1.0 completely opaque." + "tooltip": "The opacity of the background between 0.0 fully transparent and 1.0 completely opaque." }, "lineHeight": { "tooltip": "The height of each line of text. This determines the size of the text." @@ -162,6 +162,9 @@ "avatarPriority": { "tooltip": "Alter Avatars' update priorities." }, + "screenshare": { + "tooltip": "Enable screen-sharing within this zone" + }, "modelURL": { "tooltip": "A mesh model from an FBX or OBJ file." }, @@ -212,7 +215,7 @@ "jsPropertyName": "color" }, "imageAlpha": { - "tooltip": "Set the opacity of the image between 0.0 fully transparent and 1.0 completely opaque." + "tooltip": "The opacity of the image between 0.0 fully transparent and 1.0 completely opaque." }, "emissive": { "tooltip": "If enabled, the image will display at full brightness." @@ -319,17 +322,17 @@ "tooltip": "The spread in color that each particle is given, resulting in a variety of colors." }, "particleAlphaTriple": { - "tooltip": "Set the opacity of each particle between 0.0 fully transparent and 1.0 completely opaque.", + "tooltip": "The opacity of each particle between 0.0 fully transparent and 1.0 completely opaque.", "jsPropertyName": "alpha" }, "alpha": { - "tooltip": "Set the opacity of each particle between 0.0 fully transparent and 1.0 completely opaque." + "tooltip": "The opacity of each particle between 0.0 fully transparent and 1.0 completely opaque." }, "alphaStart": { - "tooltip": "Set the initial opacity level of each particle between 0.0 fully transparent and 1.0 completely opaque." + "tooltip": "The initial opacity level of each particle between 0.0 fully transparent and 1.0 completely opaque." }, "alphaFinish": { - "tooltip": "Set the final opacity level of each particle between 0.0 fully transparent and 1.0 completely opaque." + "tooltip": "The final opacity level of each particle between 0.0 fully transparent and 1.0 completely opaque." }, "alphaSpread": { "tooltip": "The spread in opacity that each particle is given, resulting in a variety of opacity levels." @@ -605,7 +608,7 @@ "tooltip": "The tint of the web entity." }, "webAlpha": { - "tooltip": "Set the opacity of the web entity between 0.0 fully transparent and 1.0 completely opaque." + "tooltip": "The opacity of the web entity between 0.0 fully transparent and 1.0 completely opaque." }, "maxFPS": { "tooltip": "The FPS at which to render the web entity. Higher values will have a performance impact." From 395f950cb3f4b738575348dd71400ac6a1a19723 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Fri, 8 May 2020 14:59:01 +1200 Subject: [PATCH 081/160] Fix whitespace and line endings in tabs.css --- scripts/system/html/css/tabs.css | 154 +++++++++++++++---------------- 1 file changed, 77 insertions(+), 77 deletions(-) diff --git a/scripts/system/html/css/tabs.css b/scripts/system/html/css/tabs.css index 87e1c11ee8..303f880228 100644 --- a/scripts/system/html/css/tabs.css +++ b/scripts/system/html/css/tabs.css @@ -1,77 +1,77 @@ -/* -// tabs.css -// -// Created by Alezia Kurdis on 27 Feb 2020 -// Copyright 2020 Project Athena contributors. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -*/ - -div.tabsContainer { - float: left; - width: 32px; - padding: 0px; -} - -.tabsContainer button { - padding: 4px; - text-align: center; - cursor: pointer; - transition: 0.4s; - font-size: 14px; - background-color: #404040; - border-color: #404040; - border-width: 1px 0px 1px 1px; - border-radius: 5px 0px 0px 5px; - outline: none; -} - -.tabsContainer button:hover { - background-color: #575757; -} - -.tabsContainer button.active { - background-color: #2E2E2E; -} - -div.labelTabHeader { - font-size: 20px; - font-weight: 700; - height: 40px; - color: #ffffff; -} - -div.tab-section-header { - width: 100%; - padding: 5px; -} - -table.tabsTableFrame { - width: 100%; - min-height: 352px; - display: block; -} - -tr.tabsTrFrame { - width: 100%; -} - -td.tabsFrame { - width: 32px; - vertical-align: top; - background-color: #575757; - padding: 0px; - border: 0px; -} - -td.tabsPropertiesFrame { - width: 100%; - vertical-align: top; - border:0px; -} - -div.tabsPropertiesPage { - min-height: 352px; - display: block; -} +/* +// tabs.css +// +// Created by Alezia Kurdis on 27 Feb 2020 +// Copyright 2020 Project Athena contributors. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +*/ + +div.tabsContainer { + float: left; + width: 32px; + padding: 0px; +} + +.tabsContainer button { + padding: 4px; + text-align: center; + cursor: pointer; + transition: 0.4s; + font-size: 14px; + background-color: #404040; + border-color: #404040; + border-width: 1px 0px 1px 1px; + border-radius: 5px 0px 0px 5px; + outline: none; +} + +.tabsContainer button:hover { + background-color: #575757; +} + +.tabsContainer button.active { + background-color: #2E2E2E; +} + +div.labelTabHeader { + font-size: 20px; + font-weight: 700; + height: 40px; + color: #ffffff; +} + +div.tab-section-header { + width: 100%; + padding: 5px; +} + +table.tabsTableFrame { + width: 100%; + min-height: 352px; + display: block; +} + +tr.tabsTrFrame { + width: 100%; +} + +td.tabsFrame { + width: 32px; + vertical-align: top; + background-color: #575757; + padding: 0px; + border: 0px; +} + +td.tabsPropertiesFrame { + width: 100%; + vertical-align: top; + border:0px; +} + +div.tabsPropertiesPage { + min-height: 352px; + display: block; +} From c6774016b5540f4a8b2c876d982cb07544581843 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Fri, 8 May 2020 15:12:09 +1200 Subject: [PATCH 082/160] Further fixes --- scripts/system/html/css/tabs.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/system/html/css/tabs.css b/scripts/system/html/css/tabs.css index 303f880228..b2d63b5652 100644 --- a/scripts/system/html/css/tabs.css +++ b/scripts/system/html/css/tabs.css @@ -31,7 +31,7 @@ div.tabsContainer { background-color: #575757; } -.tabsContainer button.active { +.tabsContainer button.active { background-color: #2E2E2E; } @@ -68,7 +68,7 @@ td.tabsFrame { td.tabsPropertiesFrame { width: 100%; vertical-align: top; - border:0px; + border: 0px; } div.tabsPropertiesPage { From 096bc40aa3ddf537a43300d32fcd87cb43110a40 Mon Sep 17 00:00:00 2001 From: Alezia Kurdis <60075796+AleziaKurdis@users.noreply.github.com> Date: Fri, 8 May 2020 15:16:38 -0400 Subject: [PATCH 083/160] Merge the "screenshare" modifs Merge the "screenshare" modifs with renderWithZones update --- scripts/system/create/edit.js | 82 +++++++++++++++++++++++------------ 1 file changed, 55 insertions(+), 27 deletions(-) diff --git a/scripts/system/create/edit.js b/scripts/system/create/edit.js index 1ab8b7f75d..ddf0c3fa2f 100644 --- a/scripts/system/create/edit.js +++ b/scripts/system/create/edit.js @@ -394,7 +394,8 @@ const DEFAULT_ENTITY_PROPERTIES = { }, shapeType: "box", bloomMode: "inherit", - avatarPriority: "inherit" + avatarPriority: "inherit", + screenshare: "inherit", }, Model: { collisionShape: "none", @@ -562,14 +563,66 @@ var toolBar = (function () { if (!properties.grab) { properties.grab = {}; if (Menu.isOptionChecked(MENU_CREATE_ENTITIES_GRABBABLE) && - !(properties.type === "Zone" || properties.type === "Light" || properties.type === "ParticleEffect")) { + !(properties.type === "Zone" || properties.type === "Light" || properties.type === "ParticleEffect" || properties.type === "Web")) { properties.grab.grabbable = true; } else { properties.grab.grabbable = false; } } + if (type === "Model") { + properties.visible = false; + } + entityID = Entities.addEntity(properties); + + var dimensionsCheckCallback = function(){ + 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", "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(false, this); + } else if (dimensionsCheckCount < MAX_DIMENSIONS_CHECKS) { + Script.setTimeout(dimensionsCheckFunction, DIMENSIONS_CHECK_INTERVAL); + } + }; + Script.setTimeout(dimensionsCheckFunction, DIMENSIONS_CHECK_INTERVAL); + } + } + // Make sure the entity is loaded before we try to figure out + // its dimensions. + var MAX_LOADED_CHECKS = 10; + var LOADED_CHECK_INTERVAL = 100; + var isLoadedCheckCount = 0; + var entityIsLoadedCheck = function() { + isLoadedCheckCount++; + if (isLoadedCheckCount === MAX_LOADED_CHECKS || Entities.isLoaded(entityID)) { + var naturalDimensions = Entities.getEntityProperties(entityID, "naturalDimensions").naturalDimensions + Entities.editEntity(entityID, { + visible: true, + dimensions: naturalDimensions + }) + dimensionsCheckCallback(); + return; + } + Script.setTimeout(entityIsLoadedCheck, LOADED_CHECK_INTERVAL); + } + Script.setTimeout(entityIsLoadedCheck, LOADED_CHECK_INTERVAL); + SelectionManager.addEntity(entityID, false, this); SelectionManager.saveProperties(); pushCommandForSelections([{ @@ -577,31 +630,6 @@ var toolBar = (function () { properties: properties }], [], true); - 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", "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(false, this); - } 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."); From 74f7b324b81edca0cd04db7163c123cc5254f04e Mon Sep 17 00:00:00 2001 From: Alezia Kurdis <60075796+AleziaKurdis@users.noreply.github.com> Date: Fri, 8 May 2020 23:36:05 -0400 Subject: [PATCH 084/160] Reconvert EOL to Unix style. Reconvert EOL to Unix style. --- scripts/system/html/css/edit-style.css | 3644 ++++++++++++------------ 1 file changed, 1822 insertions(+), 1822 deletions(-) diff --git a/scripts/system/html/css/edit-style.css b/scripts/system/html/css/edit-style.css index 4aea29de38..c72456d414 100644 --- a/scripts/system/html/css/edit-style.css +++ b/scripts/system/html/css/edit-style.css @@ -1,1822 +1,1822 @@ -/* -// edit-style.css -// -// Created by Ryan Huffman on 13 Nov 2014 -// Copyright 2014 High Fidelity, Inc. -// Copyright 2020 Vircadia contributors. -// -// 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 { - - color: #afafaf; - background-color: #404040; - font-family: Raleway-Regular; - font-size: 12px; - - -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 0; - border-bottom: 1px solid #575757; - width: 100%; -} - -tbody { - width: 100%; - display: block; -} - -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: clip; - white-space: nowrap; - word-wrap: nowrap; - padding-left: 12px; - padding-right: 12px; -} - -td.hidden { - padding-left: 0; - padding-right: 0; -} - -td.url { - white-space: nowrap; - overflow: hidden; -} - - -input[type="text"], input[type="search"], 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, button: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 0 1px #00b4ef; -} - -input:disabled, textarea:disabled, .draggable-number.text[disabled="disabled"] { - background-color: #383838; - color: #afafaf; -} - -input[type="text"] { - height: 28px; - width: 100%; -} - -input.multi-diff:not(:focus) + span.multi-diff, -textarea.multi-diff:not(:focus) + span.multi-diff, -.draggable-number.multi-diff>input:not(:focus)+span.multi-diff, -dl>dt.multi-diff:not(:focus) + span.multi-diff { - visibility: visible; - position: absolute; - display: inline-block; - z-index: 2; - top: 7.5px; - left: 20px; - max-width: 50px; - min-width: 10px; - width: 50%; - height: 13px; - background-image: linear-gradient(transparent 0%, transparent 10%, #afafaf 10%, #afafaf 20%, transparent 20%, transparent 45%, #afafaf 45%, #afafaf 55%, transparent 55%, transparent 80%, #afafaf 80%, #afafaf 90%, transparent 90%, transparent 100%); - background-repeat: no-repeat; - pointer-events: none; -} - -input.multi-diff:not(:focus)::-webkit-input-placeholder, input.multi-diff:not(:focus) { - color: transparent; -} - -.draggable-number.multi-diff .text { - color: transparent; -} - -.dropdown > span.multi-diff { - top: 5px; - left: 10px; -} - -.text, .url, .texture, .textarea { - position: relative; -} - -input[type="search"] { - height: 28px; - width: 100%; -} -input[type="search"]::-webkit-search-cancel-button { - -webkit-appearance: none; - height: 20px; - width: 20px; - background-image: url('data:image/png;base64,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') -} - -input[type="number"] { - position: relative; - height: 28px; - width: 124px; -} -input[type=number] { - padding-right: 3px; -} -input[type=number]::-webkit-inner-spin-button { - opacity: 1.0; - display: block; - position: relative; - width: 10px; - height: 90%; - overflow: hidden; - font-family: HiFi-Glyphs; - font-size: 32px; - 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[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]::-webkit-slider-thumb:hover { - background-color: white; -} -input[type=range]:focus { - outline: none; -} - -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], button.hifi-edit-button { - font-family: Raleway-Bold; - font-size: 13px; - text-transform: uppercase; - vertical-align: top; - height: 28px; - min-width: 120px; - padding: 0 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, button.hifi-edit-button.glyph { - font-family: HiFi-Glyphs; - font-size: 20px; - text-transform: none; - min-width: 32px; - padding: 0; -} - -input[type=button].red, button.hifi-edit-button.red { - color: #fff; - background-color: #94132e; - background: linear-gradient(#d42043 20%, #94132e 100%); -} -input[type=button].blue, button.hifi-edit-button.blue { - color: #fff; - background-color: #1080b8; - background: linear-gradient(#00b4ef 20%, #1080b8 100%); -} -input[type=button].white, button.hifi-edit-button.white { - color: #121212; - background-color: #afafaf; - background: linear-gradient(#fff 20%, #afafaf 100%); -} - -input[type=button]:enabled:hover, button.hifi-edit-button:enabled:hover { - background: linear-gradient(#000, #000); - border: none; -} -input[type=button].red:enabled:hover, button.hifi-edit-button.red:enabled:hover { - background: linear-gradient(#d42043, #d42043); - border: none; -} -input[type=button].blue:enabled:hover, button.hifi-edit-button.blue:enabled:hover { - background: linear-gradient(#00b4ef, #00b4ef); - border: none; -} -input[type=button].white:enabled:hover, button.hifi-edit-button.white:enabled:hover { - background: linear-gradient(#fff, #fff); - border: none; -} - -input[type=button]:active, button.hifi-edit-button:active { - background: linear-gradient(#343434, #343434); -} -input[type=button].red:active, button.hifi-edit-button.red:active { - background: linear-gradient(#94132e, #94132e); -} -input[type=button].blue:active, button.hifi-edit-button.blue:active { - background: linear-gradient(#1080b8, #1080b8); -} -input[type=button].white:active, button.hifi-edit-button.white:active { - background: linear-gradient(#afafaf, #afafaf); -} - -input[type=button]:disabled, button.hifi-edit-button:disabled { - color: #252525; - background: linear-gradient(#575757 20%, #252525 100%); -} - -input[type=button][pressed=pressed], button.hifi-edit-button[pressed=pressed] { - color: #00b4ef; -} - -input[type=checkbox] { - display: none; -} -input[type=checkbox] + label { - padding-left: 24px; - background-repeat: no-repeat; - background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACpSURBVDhPY2xoaGD68+dPMSMjY9L////VgTQjAw4AlH8PxLOPHj1azWxjY1MBVNsBFBfBpwkEgNKcQGwtJyfHyATkF0KEiQdAzYlMQEIUyicFyDD9+/ePgRxMvsb///4zkIOZ/v0HmkAGHginYjGNGAzS+BpdkAj8mun/3//92DyPD//993cG88nTJ4+Zm5p/BSZeJYb/DEJADEzNOPF7hn8Mk69cvVIPAHN5pyfo70F5AAAAAElFTkSuQmCC); - cursor: pointer; -} -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=); -} -input.multi-diff[type=checkbox] + label { - background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFbSURBVDhPY2xoaGD68+dPMSMjY9L////VgTQjAw4AlH8PxLOPHj1azWxjY1MBVNsBFBfBpwkEgNKcQGwtJyfHyALkF4IE34gqM9zU9WT4wicG4mIA1l/fGIyOL2EQeP8EZEAiC5AQBUlcMQ5ieMXIwfDo9SeG73/+gRXDAAsTI4Pd9wdgTVAgw/Tv3z8GEP7Jwctw78M3DE0goPr6BoPludVgdTAM1wgCv//9B9PIQOPNDYaAGxtRNIEw03+gYhDGBtSBNgVc3wiWR8dM//4DTQBidKD++jqD//X1YDlsGMWpMKD26jqD79V1GM5DxihOZQWGntqrawy+V9ZiOA0dw21k/f6JwerzHQbvS2swTMeGGfPz8l8BLRP9KizDwP0WHk+EwGum/3//94M8y/nmEdZAwIb//vs7g/nk6ZPHzE3NvwITrxLDfwYhIAamZpz4PcM/hslXrl6pBwAmfz5iaAlAuAAAAABJRU5ErkJggg==); -} -input.multi-diff[type=checkbox] + label:hover { - background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFPSURBVDhPjZJBSwJBHMXfrG6rWEkl1MFDGOihDn2JIIrqc3QJunbyFhUkRieD+hYepWteuxctXiJ1Q5xmdmZ3bWZTUHezfvAu/3lv3n+HRblcTrbb7fN+v/8eBMFgFpxz13Gcu3q9bqHb7V4M5/9GhatE3cIsy0o99YBKC3jliCWbBK43gK0MoDI9otfTB/vPBC9Uwu4xMC8IzSOSBsFxIYNqMTGcAIYQAlodD3j5/IqENIc5gqt1P/SNZKhaXR0a5E/5BEcrwH1xEHrGZbiuC604DpZ81AoiPJ/WROM4e4sSt3kaaRopNrg7z1FZdSLmcU2saqrX20lTXC5/RFabFmk2m+GLnBnbWJMOThJv4SV/QRqNBjNNM9UiGeQHdDiejZSSG5TSG71zjnVivyVOKlNLlEqlx+xCds7zvU31G6Z938dvEq4QjLMH27ZPvwHFVYQr3h7uHwAAAABJRU5ErkJggg==); -} - -.rgb.fstuple .color-picker.multi-diff:after { - width: 20px; - height: 20px; - content: ' '; - background: darkgray; - display: flex; - clip-path: polygon(0 0, 0 100%, 100% 100%); -} - -.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; -} - -.icon { - font-family: HiFi-Glyphs; - color: white; -} - -#property-type-icon { - font-size: 50px; -} - -.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; -} - -#properties-list { - display: flex; - flex-direction: column; - - margin-top: 16px; -} - -#properties-list .fieldset { - position: relative; - /* 0.1px on the top is to prevent margin collapsing between this and it's first child */ - margin: 0 -21px 21px -21px; - padding: 0.1px 21px 0 21px; - border: none; - border-top: 1px rgb(90,90,90) solid; - box-shadow: 0 -1px 0 rgb(37,37,37); -} - -#properties-list .fieldset.fstuple, #properties-list .fieldset.fsrow { - margin-top: 21px; - border: none; - box-shadow: none; -} - -#properties-list > .fieldset[data-collapsed="true"] + .fieldset { - margin-top: 0; -} - -#properties-list > .fieldset[data-collapsed="true"] > *:not(div.legend) { - display: none !important; -} - -.section-header { - padding: 0 16px; - border-top: 1px rgb(90,90,90) solid; - box-shadow: 1px -1px 0 rgb(37,37,37); - border-bottom: 1px solid rgb(37, 37, 37); -} - -div.section-header, hr { - display: flex; - flex-flow: row nowrap; - padding: 10px 16px; - font-family: Raleway-Regular; - font-size: 12px; - color: #afafaf; - height: 28px; - text-transform: uppercase; - outline: none; - margin-bottom: 10px; - align-items: center; -} - -.section.minor { - margin: 0 21px; - box-shadow: 1px -1px 0 rgb(37,37,37); - border-left: 1px solid #575757; -} - -.container.property { - padding: 0 16px; -} - -.stretch { - width: 100%; -} - -div.section-header .label { - width: 100%; -} - -.section.minor div.section-header { - border-right: 0; -} - -div.section[collapsed="true"] > .container { - display: none; -} - -div.section[collapsed="true"], div.section[collapsed="true"] > .section-header { - margin-bottom: 0; -} - -.section.major { - margin-bottom: 20px; -} - -.section.minor.last { - margin-bottom: 20px; - border-bottom: 1px solid rgb(37,37,37); -} - -.section-header { - background-color: #373737; -} - - -.section-header span { - font-size: 30px; - font-family: HiFi-Glyphs; -} - -.triple-label { - text-transform: uppercase; - text-align: center; - padding: 6px 0; - cursor: default; -} - -.triple-item { - margin-right: 10px; -} - -.triple-item.rgb.fstuple { - display: block !important; -} - -.section-header[collapsed="true"] { - margin-bottom: -21px; -} - -#properties-list .sub-section-header { - border-top: none; - box-shadow: none; - margin-top: 8px; -} - -.sub-section-header + .property { - margin-top: 0; -} - -hr { - border: none; - padding-top: 2px; -} - -.property { - min-height: 28px; -} - -.property.checkbox { - width: auto; -} - -span.indented { - padding-left: 16px; -} - -.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; -} - -.property div.legend, .number div.legend { - display: table-cell; - vertical-align: middle; - font-family: Raleway-SemiBold; - font-size: 14px; -} -.property div.legend .unit, .number div.legend .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; -} -.value div.legend { - display: inline-block; - vertical-align: top; - width: 48px; -} -.value span { - font-size: 15px; - margin-right: 4px; -} - -#placeholder-property-type { - display: flex; - align-items: center; - width: auto; - margin-right: 20px; -} - -#placeholder-property-locked { - margin-left: 6px; -} - -.checkbox + .checkbox { - margin-top: 0; -} - -.checkbox-sub-props { - margin-top: 18px; -} - -.property .number { - float: left; -} -.property .number + .number { - margin-left: 10px; -} - -.property.range label{ - padding-bottom: 3px; -} -.property.range input[type=number]{ - margin-left: 0.8rem; - width: 5.4rem; - height: 1.8rem; -} - -.dropdown { - position: relative; - margin-bottom: -17px; -} - -.dropdown select { - clear: both; -} - -.dropdown dl { - clear: both; - cursor: pointer; - font-family: FiraSans-SemiBold; - font-size: 15px; - width: 292px; - height: 28px; - padding: 0 28px 0 12px; - color: #afafaf; - background: #575757; - position: relative; - display: flex; - align-items: center; -} - -.dropdown dl[dropped="true"] { - color: #404040; - background: linear-gradient(#afafaf, #afafaf); - z-index: 998; -} - -.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; - z-index: 999; -} -.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; -} - -.multiselect-box { - position: absolute; -} -.multiselect-box select { - font-family: FiraSans-SemiBold; - font-size: 15px; - color: #afafaf; - background-color: #252525; - border: none; - text-align-last: center; -} -.over-select { - position: absolute; - left: 0; - right: 0; - top: 0; - bottom: 0; -} -.multiselect-options { - position: absolute; - display: none; - border: none; -} -.multiselect-options span { - font-family: hifi-glyphs; - font-size: 13px; - color: #000000; -} -.multiselect-options label { - z-index: 2; - display: block; - font-family: FiraSans-SemiBold; - font-size: 11px; - color: #000000; - background-color: #afafaf; -} -.multiselect-options label:hover { - background-color: #1e90ff; -} -.multiselect-options input[type=checkbox] + label { - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH4goSADUOYnF4LQAAABl0RVh0Q29tbWVudABDcmVhdGVkIHdpdGggR0lNUFeBDhcAAAIMSURBVFjD7ZmxkqowFIZ/7mwJPen1AezV3t6hFvrQhweAHvrQ8wL2xt4HwD7ppd+tvHOvu0gCYdEZTsmAfpNzzpcTcAB84o3iD94sZuCx4+Pxwvl8dl4JcL1ef84lMQPPwBZDSgkp5XsASylBKUUYhhBCvDbw7XYDpRRKKTRNA8YYOOevC5ymKZRS/13jnHdCTwLMOW8tAc45GGNomuY1gKuq6lxFIQQopdMDXy4X5HmudW8URdMCSynBGNOG3Ww20wHf9dVWl4+wbav7a8CMsW9G+Cm22+1T2F8BzvMc1+u18z5CCJIkseNhKSX2+z2qqjLWl84zhBAURQHXde0A31Oa57nWbqSrLwDwPA9FUcD3fTtb82NKu8QOAHVda+srSRJt2E7gtpQKIXA4HH6csmzpyxj4dDo9TalSCpRS1HX9TV86RujSlxGwlBJpmnY+rJRCGIZ/s2BTX9qnZgBwHAee52mJ/l7nx+PRqr6MVtj3fZRlaVRf/5aGDX0Z17DrusiyrHfqhuqrt9aiKEIcx4OBTfU1aOMIggBlWYIQ0utP+uhr8CyxXC5RFIUxdBAE1srKePgxbcbVamWlnAZNa7rNSAhBlmWv8yLlWTPa0Nco83BbM2ZZZsUIowzwj80YxzEWi8VoB4IPGz9yb0YhBHa73agnGGtHJNd1R4ed9FVV33Awf6ebgd8b+Av9A/rq6s3hjgAAAABJRU5ErkJggg=='); - background-size: 11px 11px; - background-position: top 5px left 14px; -} -.multiselect-options input[type=checkbox]:enabled + label:hover { - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH4goSADUOYnF4LQAAABl0RVh0Q29tbWVudABDcmVhdGVkIHdpdGggR0lNUFeBDhcAAAIMSURBVFjD7ZmxkqowFIZ/7mwJPen1AezV3t6hFvrQhweAHvrQ8wL2xt4HwD7ppd+tvHOvu0gCYdEZTsmAfpNzzpcTcAB84o3iD94sZuCx4+Pxwvl8dl4JcL1ef84lMQPPwBZDSgkp5XsASylBKUUYhhBCvDbw7XYDpRRKKTRNA8YYOOevC5ymKZRS/13jnHdCTwLMOW8tAc45GGNomuY1gKuq6lxFIQQopdMDXy4X5HmudW8URdMCSynBGNOG3Ww20wHf9dVWl4+wbav7a8CMsW9G+Cm22+1T2F8BzvMc1+u18z5CCJIkseNhKSX2+z2qqjLWl84zhBAURQHXde0A31Oa57nWbqSrLwDwPA9FUcD3fTtb82NKu8QOAHVda+srSRJt2E7gtpQKIXA4HH6csmzpyxj4dDo9TalSCpRS1HX9TV86RujSlxGwlBJpmnY+rJRCGIZ/s2BTX9qnZgBwHAee52mJ/l7nx+PRqr6MVtj3fZRlaVRf/5aGDX0Z17DrusiyrHfqhuqrt9aiKEIcx4OBTfU1aOMIggBlWYIQ0utP+uhr8CyxXC5RFIUxdBAE1srKePgxbcbVamWlnAZNa7rNSAhBlmWv8yLlWTPa0Nco83BbM2ZZZsUIowzwj80YxzEWi8VoB4IPGz9yb0YhBHa73agnGGtHJNd1R4ed9FVV33Awf6ebgd8b+Av9A/rq6s3hjgAAAABJRU5ErkJggg=='); -} -.multiselect-options input[type=checkbox]:checked + label { - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH4goSADMveELP9QAAABl0RVh0Q29tbWVudABDcmVhdGVkIHdpdGggR0lNUFeBDhcAAAIqSURBVFjD7ZmxkqowFIb/7GwJPfT6APZib+9QC33o4QGghz70vIC9sfcBsE966bPNWlxnlQTDRWc4JUT4hpPz5SQSAAofFF/4sJiBx47v+wun04m8E+B6vVbzlJiBZ2CLIYRQQgj1EcBCCEUpRRRF4Jyrtwa+Xq+glEJKia7rkKYpGGPqbYHzPFdSyn+uMcZ6oScBZowpzvmje0jTVHVd9x7ATdMoxtjTMZxzUErV5MDn81mVZak1No7jab+wEEKlaaoNGwQBmQz4pq9H8/IeNo5jMmnRpWmKeyP8FZvN5insfwEuy1JdLpfecb7vI8uy3tb2Szelu91ONU1jtP9jjKmmabRgq6qC4zh2VrpbSsuy1FqNdPUFAK7roqoqeJ6ntXH4Mk1pn9gBoG1bbX1lWaYN2wv8KKWcc+z3+z+7LFv6MgY+Ho9PUyqlBKUUbduqe33pGKFPX0bAQgiV53nvj6WUiKIIt2K0qS/tXTMAEELguq6W6H/nOQ6Hg1V9GX1hz/NIXdckCALtB7Vta1VfxnPYcRwURUEeNSGmYaqvwVqL45gkSfIysKm+Xlo4wjAkdV3D9/1BLxmir5d7ieVySaqqMoYOw3CwEV5ufkyLcbVaIUkSq2d1xt2abjH6vo+iKKwfLA5uL58Vow19jdIPPyrGoiisGGGUBv6+GJMkwWKxGO2M+dvGQ36LEZxztd1uRz0Qt7ZFchwHY8NOelQ1NAjm/+lm4M8G/gH2zx33BSr7jAAAAABJRU5ErkJggg=='); -} -.multiselect-options input[type=checkbox]:checked + label:hover { - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH4goSADMveELP9QAAABl0RVh0Q29tbWVudABDcmVhdGVkIHdpdGggR0lNUFeBDhcAAAIqSURBVFjD7ZmxkqowFIb/7GwJPfT6APZib+9QC33o4QGghz70vIC9sfcBsE966bPNWlxnlQTDRWc4JUT4hpPz5SQSAAofFF/4sJiBx47v+wun04m8E+B6vVbzlJiBZ2CLIYRQQgj1EcBCCEUpRRRF4Jyrtwa+Xq+glEJKia7rkKYpGGPqbYHzPFdSyn+uMcZ6oScBZowpzvmje0jTVHVd9x7ATdMoxtjTMZxzUErV5MDn81mVZak1No7jab+wEEKlaaoNGwQBmQz4pq9H8/IeNo5jMmnRpWmKeyP8FZvN5insfwEuy1JdLpfecb7vI8uy3tb2Szelu91ONU1jtP9jjKmmabRgq6qC4zh2VrpbSsuy1FqNdPUFAK7roqoqeJ6ntXH4Mk1pn9gBoG1bbX1lWaYN2wv8KKWcc+z3+z+7LFv6MgY+Ho9PUyqlBKUUbduqe33pGKFPX0bAQgiV53nvj6WUiKIIt2K0qS/tXTMAEELguq6W6H/nOQ6Hg1V9GX1hz/NIXdckCALtB7Vta1VfxnPYcRwURUEeNSGmYaqvwVqL45gkSfIysKm+Xlo4wjAkdV3D9/1BLxmir5d7ieVySaqqMoYOw3CwEV5ufkyLcbVaIUkSq2d1xt2abjH6vo+iKKwfLA5uL58Vow19jdIPPyrGoiisGGGUBv6+GJMkwWKxGO2M+dvGQ36LEZxztd1uRz0Qt7ZFchwHY8NOelQ1NAjm/+lm4M8G/gH2zx33BSr7jAAAAABJRU5ErkJggg=='); -} - -.dynamic-multiselect { - position: relative; - top: 6px; - padding-bottom: 6px; -} - -div.refresh { - box-sizing: border-box; - padding-right: 44px; -} -div.refresh input[type="button"] { - float: right; - margin-right: -44px; - position: relative; - left: 10px; -} - -.color-picker { - box-sizing: border-box; - width: 26px; - height: 26px; - border: 3px solid #2B2B2B; - cursor: pointer; -} -.color-picker:focus { - outline: none; -} -.color-picker[active="true"] { - border-color: #000; -} - -.color-picker[disabled="disabled"] { - border-color: #afafaf; -} - -.colpick { - z-index: 3; -} -.colpick[disabled="disabled"] { - display: none !important; -} - -.rgb label { - float: left; - margin-top: 10px; - margin-left: 21px; -} -.rgb label + * { - clear: both; -} - -.rgb div.legend { - float: left; - margin-top: 10px; - margin-left: 21px; -} -.rgb div.legend + * { - clear: both; -} - -.draggable-number-container { - flex: 0 1 124px; -} -.draggable-number { - position: relative; - height: 28px; - flex: 0 1 124px; - display: flex; - align-items: center; -} - -.draggable-number .text { - position: absolute; - display: inline-block; - color: #afafaf; - background-color: #252525; - font-family: FiraSans-SemiBold; - font-size: 15px; - margin: 0; - padding: 0 16px; - height: 28px; - width: 100%; - line-height: 2; - box-sizing: border-box; - z-index: 1; -} -.draggable-number .text:hover { - cursor: ew-resize; -} -.draggable-number .left-arrow, .draggable-number .right-arrow { - position: absolute; - display: inline-block; - font-family: HiFi-Glyphs; - font-size: 20px; - z-index: 2; -} -.draggable-number span:hover { - cursor: default; -} -.draggable-number .left-arrow { - top: 3px; - left: 0; - transform: rotate(180deg); -} -.draggable-number .right-arrow { - top: 3px; - right: 0; -} -.draggable-number input[type=number] { - position: absolute; - right: 0; - width: 100%; -} -.draggable-number input[type=button] { - position: absolute; - top: 0; -} -.draggable-number input::-webkit-inner-spin-button { - -webkit-appearance: none; - visibility: hidden; -} -.draggable-number.fstuple { - height: 28px; - width: 124px; - left: 12px; -} -.draggable-number.fstuple + .draggable-number.fstuple { - margin-left: 28px; -} -.draggable-number.fstuple input { - right: -10px; -} -.draggable-number.fstuple .sublabel { - position: absolute; - top: 6px; - left: -16px; - font-family: FiraSans-SemiBold; - font-size: 15px; -} - -.rect .rect-row { - margin-bottom: 8px; -} - -.row .property { - width: auto; - display: inline-block; - margin-right: 6px; -} -.row .property:last-child { - margin-right: 0; -} -.row .property input { - clear: both; - float: left; -} - -.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,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'); -} -.texture-image.no-preview { - background-image: url('data:image/png;base64,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'); -} - -.two-column { - display: table; - width: 100%; -} -.two-column > div { - display: table-cell; - width: 50%; -} - -#properties-list .fieldset .two-column { - padding-top: 10px; - display: flex; -} - -#properties-list .two-column .fieldset { - width: 50%; - margin: 0; - padding: 0; - border-top: none; - box-shadow: none; -} - -#properties-list .two-column .column { - position: relative; - top: -10px; -} - -#properties-list .two-column .fieldset div.legend { - width: 100%; - margin: 21px -21px 0 -21px; - padding: 16px 0 0 21px; - font-family: Raleway-Regular; - font-size: 12px; - color: #afafaf; - height: 10px; - text-transform: uppercase; - outline: none; -} - -#properties-list .two-column + .property { - margin-top: 6px; -} - -.fieldset .checkbox-sub-props { - margin-top: 0; -} - -.fieldset .checkbox-sub-props .property:first-child { - margin-top: 0; -} - -.column { - vertical-align: top; -} - -.indent { - margin-left: 24px; -} - -::-webkit-scrollbar { - width: 20px; - height: 10px; -} -::-webkit-scrollbar-track { - background-color: #2e2e2e; -} -#entity-table-scroll::-webkit-scrollbar-track { - border-bottom-right-radius: 7px; -} - -::-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; -} - - -div#grid-section, body#entity-list-body { - padding-bottom: 0; - margin: 16px; -} - -#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; -} - -#entity-list { - position: relative; /* New positioning context. */ -} - -#filter-area { - padding-right: 168px; - padding-bottom: 24px; -} - -#filter-type-multiselect-box select { - border-radius: 14.5px; - width: 107px; - height: 28px; -} -#filter-type-options { - position: absolute; - top: 48px; -} -#filter-type-options div { - position: relative; - height: 22px; -} -#filter-type-options span { - position: relative; - top: 3px; - font-family: HiFi-Glyphs; - font-size: 13px; - color: #000000; - padding-left: 6px; - padding-right: 4px; -} -#filter-type-options label { - position: absolute; - top: -20px; - z-index: 2; - height: 22px; - width: 200px; - padding-top: 1px; -} -#filter-type-options-buttons { - top: -22px; - width: 224px; - z-index: 2; - background-color: #afafaf; - padding-bottom: 6px; -} -#filter-type-options input[type=button] { - position: relative; - left: 16px; - z-index: 3; - height: 23px; - min-width: 60px; - font-size: 10px; - color: #000; - background: linear-gradient(#afafaf 20%, #808080 100%); -} -#filter-type-options input[type=button]:enabled:hover { - background: linear-gradient(#afafaf 20%, #575757 100%); -} - -#filter-search-and-icon { - position: relative; - left: 118px; - width: calc(100% - 126px); -} - -#filter-in-view { - position: absolute; - top: 0; - right: 126px; -} - -#filter-radius-and-unit { - position: relative; - float: right; - margin-right: -168px; - top: -45px; -} -#filter-radius-and-unit label { - margin-left: 2px; -} -#filter-radius-and-unit span { - position: relative; - top: 25px; - right: 9px; - z-index: 2; - font-style: italic; -} -#filter-radius-and-unit input { - width: 120px; - border-radius: 14.5px; - font-style: italic; -} -#filter-radius-and-unit input[type=number]::-webkit-inner-spin-button { - display: none; -} - -#entity-list-footer { - padding-top: 9px; -} - -#footer-text { - float: right; - padding-top: 12px; - padding-right: 22px; -} - -input[type=button]#export { - height: 38px; - width: 180px; -} - -#no-entities { - display: none; - position: absolute; - top: 80px; - padding: 12px; - font-family: FiraSans-SemiBold; - font-size: 15px; - font-style: italic; - color: #afafaf; -} - -#entity-table-columns-multiselect { - position: absolute; - top: 51px; - right: 22px; -} -#entity-table-columns-multiselect-box select { - height: 28px; - width: 20px; - background-color: #1c1c1c; - border-top-right-radius: 7px; -} -#entity-table-columns-options { - position: absolute; - top: 50px; - right: 110px; -} -#entity-table-columns-options div { - position: relative; - height: 22px; -} -#entity-table-columns-options label { - position: absolute; - top: -22px; - height: 22px; - width: 100px; - padding-top: 4px; -} -#entity-table-columns-options input[type=checkbox] + label { - padding-left: 30px; -} - -#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; - border-bottom: 2px solid #575757; - border-bottom-left-radius: 7px; - border-bottom-right-radius: 7px; - 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 { - 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; -} - -#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 thead .sort-order { - display: inline-block; - width: 8px; - margin: -5px 0 -3px 0; - vertical-align: middle; -} - -#entity-table thead .resizer { - position: absolute; - top: 1px; - height: 26px; - width: 10px; - cursor: col-resize; -} - -#entity-table .dragging { - background-color: #b3ecff; -} - -#entity-table td { - box-sizing: border-box; -} -#entity-table td.glyph { - text-align: center; - padding: 0; -} - -#properties-base { - border-top: none !important; - box-shadow: none !important; - margin-bottom: 5px !important; -} - -#properties-base #property-type-icon { - font-family: HiFi-Glyphs; - font-size: 31px; - color: #00b4ef; - margin: -4px 12px -4px -2px; - width: auto; - display: none; -} - -#properties-base #property-type { - padding: 5px 24px 5px 0; - border-right: 1px solid #808080; - width: auto; - display: inline-block; -} - -#properties-base .checkbox label span { - font-family: HiFi-Glyphs; - font-size: 20px; - padding-right: 6px; - vertical-align: top; - position: relative; - top: -4px; -} - -#properties-base input[type=checkbox]:checked + label span { - color: #ffffff; -} - -#id label { - width: 24px; -} -#property-id { - display: inline-block; -} -#property-id::selection { - color: #000000; - background-color: #00b4ef; -} - -input#property-scale-button-rescale { - min-width: 50px; - left: 152px; -} -input#property-scale-button-reset { - margin-right: 0; - left: 250px; -} - -#property-userData-static, -#property-materialData-static { - display: none; - z-index: 99; - position: absolute; - width: 96%; - padding-left: 1%; - margin-top: 5px; - margin-bottom: 10px; - background-color: #2e2e2e; -} - -#property-userData-saved, -#property-materialData-saved { - margin-top: 5px; - font-size: 16px; - display: none; -} - - -#div-property-collisionSoundURL[style*="display: none"] + .property { - margin-top: 0; -} - -.context-menu { - display: none; - position: fixed; - color: #000000; - background-color: #afafaf; - padding: 5px 0 5px 0; - cursor: default; -} -.context-menu li { - list-style-type: none; - padding: 4px 18px 4px 18px; - margin: 0; - white-space: nowrap; -} -.context-menu li:hover { - background-color: #e3e3e3; -} -.context-menu li.separator { - border-top: 1px solid #333333; - margin: 5px 5px; - padding: 0 0; -} -.context-menu li.disabled { - color: #333333; -} -.context-menu li.separator:hover, .context-menu li.disabled:hover { - background-color: #afafaf; -} - -input.rename-entity { - height: 100%; - width: 100%; - border: none; - font-family: FiraSans-SemiBold; - font-size: 15px; - /* need this to show the text cursor when the input field is empty */ - padding-left: 2px; -} - -.create-app-tooltip { - z-index: 100; - position: absolute; - background: #6a6a6a; - border: 1px solid black; - width: 258px; - min-height: 20px; - padding: 5px; - z-index: 100; -} - -.create-app-tooltip .create-app-tooltip-description { - font-size: 12px; - font-style: italic; - color: #ffffff; -} - -.create-app-tooltip .create-app-tooltip-js-attribute { - font-family: Raleway-SemiBold; - font-size: 11px; - color: #000000; - bottom: 0; - margin-top: 5px; -} - -#toggle-space-mode::before { - font-family: HiFi-Glyphs; - font-size: 20px; - text-transform: none; - min-width: 32px; - padding-right: 4px; - vertical-align: middle; -} - -#toggle-space-mode.space-mode-local::before { - content: "m"; -} - -#toggle-space-mode.space-mode-world::before { - content: "\e02c"; -} - -.container { - display: flex; - flex-flow: row nowrap; - margin-bottom: 8px; - min-height: 28px; -} - -.container > label { - margin-top: 6px; - width: 160px; - min-width: 160px; - max-width: 160px; -} - -.container > div.checkbox { - padding-top: 6px; -} - -.container > .value { - width: 100%; -} - -.container .row { - display: flex; - flex-flow: row nowrap; -} - -.container.shrink { - width: min-content; -} - -.fstuple { - display: flex; - flex-flow: row; -} -.fstuple input { - margin-left: 4px; - margin-right: 10px; -} -.fstuple label.red, .fstuple label.x, .fstuple label.w { - color: #C62147; -} -.fstuple label.green, .fstuple label.y, .fstuple label.h { - color: #359D85; -} -.fstuple label.blue, .fstuple label.z { - color: #0093C5; -} - -.xyz.fstuple, .pyr.fstuple { - position: relative; - left: -12px; - min-width: 50px; - width: 100px; -} - -.rgb.fstuple .tuple { - display: none; -} - -input.number-slider { - background: #575757; - border-radius: 4px; - color: white; -} - -.fstuple > div { - display: flex; - align-items: center; - justify-content: left; -} - -.flex-row { - display: flex; - flex-flow: row; -} - -.flex-column { - display: flex; - flex-flow: column; -} - -.flex-center { - align-items: center; -} - -.flex-evenly-spaced { - flex: 1; -} - -#property-serverScripts-status { - font-family: Raleway-Light; - font-size: 14px; - margin: 6px 0; - cursor: default; -} - -#property-name, #property-id { - display: flex; - width: 100%; -} - -.spacemode-hidden { - display: none; -} - -#placeholder-property-type { - min-width: 0; -} - -.collapse-icon { - cursor: pointer; -} - -#property-userData-editor.error { - border: 2px solid red; -} - -#property-userData-editorStatus { - color: white; - background-color: red; - padding: 5px; - display: none; - cursor: pointer; -} - -#property-materialData-editor.error { - border: 2px solid red; -} - -#property-materialData-editorStatus { - color: white; - background-color: red; - padding: 5px; - display: none; - cursor: pointer; -} - -input[type=number].hide-spinner::-webkit-inner-spin-button { - -webkit-appearance: none; - visibility: hidden; -} - -div.jsoneditor-menu a.jsoneditor-poweredBy { - display: none; -} -td.zoneItem { - width: 100%; -} - -select.zoneSelect { - clear: both; - cursor: pointer; - font-family: FiraSans-SemiBold; - font-size: 15px; - width: 90%; - height: 28px; - padding: 0 28px 0 12px; - color: #afafaf; - background: #575757; - position: relative; - display: inline; - border: 0px; - align-items: center; - outline: none; -} - -div.multiZoneSelToolbar { - padding: 0px; -} - +/* +// edit-style.css +// +// Created by Ryan Huffman on 13 Nov 2014 +// Copyright 2014 High Fidelity, Inc. +// Copyright 2020 Vircadia contributors. +// +// 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 { + + color: #afafaf; + background-color: #404040; + font-family: Raleway-Regular; + font-size: 12px; + + -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 0; + border-bottom: 1px solid #575757; + width: 100%; +} + +tbody { + width: 100%; + display: block; +} + +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: clip; + white-space: nowrap; + word-wrap: nowrap; + padding-left: 12px; + padding-right: 12px; +} + +td.hidden { + padding-left: 0; + padding-right: 0; +} + +td.url { + white-space: nowrap; + overflow: hidden; +} + + +input[type="text"], input[type="search"], 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, button: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 0 1px #00b4ef; +} + +input:disabled, textarea:disabled, .draggable-number.text[disabled="disabled"] { + background-color: #383838; + color: #afafaf; +} + +input[type="text"] { + height: 28px; + width: 100%; +} + +input.multi-diff:not(:focus) + span.multi-diff, +textarea.multi-diff:not(:focus) + span.multi-diff, +.draggable-number.multi-diff>input:not(:focus)+span.multi-diff, +dl>dt.multi-diff:not(:focus) + span.multi-diff { + visibility: visible; + position: absolute; + display: inline-block; + z-index: 2; + top: 7.5px; + left: 20px; + max-width: 50px; + min-width: 10px; + width: 50%; + height: 13px; + background-image: linear-gradient(transparent 0%, transparent 10%, #afafaf 10%, #afafaf 20%, transparent 20%, transparent 45%, #afafaf 45%, #afafaf 55%, transparent 55%, transparent 80%, #afafaf 80%, #afafaf 90%, transparent 90%, transparent 100%); + background-repeat: no-repeat; + pointer-events: none; +} + +input.multi-diff:not(:focus)::-webkit-input-placeholder, input.multi-diff:not(:focus) { + color: transparent; +} + +.draggable-number.multi-diff .text { + color: transparent; +} + +.dropdown > span.multi-diff { + top: 5px; + left: 10px; +} + +.text, .url, .texture, .textarea { + position: relative; +} + +input[type="search"] { + height: 28px; + width: 100%; +} +input[type="search"]::-webkit-search-cancel-button { + -webkit-appearance: none; + height: 20px; + width: 20px; + background-image: url('data:image/png;base64,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') +} + +input[type="number"] { + position: relative; + height: 28px; + width: 124px; +} +input[type=number] { + padding-right: 3px; +} +input[type=number]::-webkit-inner-spin-button { + opacity: 1.0; + display: block; + position: relative; + width: 10px; + height: 90%; + overflow: hidden; + font-family: HiFi-Glyphs; + font-size: 32px; + 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[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]::-webkit-slider-thumb:hover { + background-color: white; +} +input[type=range]:focus { + outline: none; +} + +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], button.hifi-edit-button { + font-family: Raleway-Bold; + font-size: 13px; + text-transform: uppercase; + vertical-align: top; + height: 28px; + min-width: 120px; + padding: 0 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, button.hifi-edit-button.glyph { + font-family: HiFi-Glyphs; + font-size: 20px; + text-transform: none; + min-width: 32px; + padding: 0; +} + +input[type=button].red, button.hifi-edit-button.red { + color: #fff; + background-color: #94132e; + background: linear-gradient(#d42043 20%, #94132e 100%); +} +input[type=button].blue, button.hifi-edit-button.blue { + color: #fff; + background-color: #1080b8; + background: linear-gradient(#00b4ef 20%, #1080b8 100%); +} +input[type=button].white, button.hifi-edit-button.white { + color: #121212; + background-color: #afafaf; + background: linear-gradient(#fff 20%, #afafaf 100%); +} + +input[type=button]:enabled:hover, button.hifi-edit-button:enabled:hover { + background: linear-gradient(#000, #000); + border: none; +} +input[type=button].red:enabled:hover, button.hifi-edit-button.red:enabled:hover { + background: linear-gradient(#d42043, #d42043); + border: none; +} +input[type=button].blue:enabled:hover, button.hifi-edit-button.blue:enabled:hover { + background: linear-gradient(#00b4ef, #00b4ef); + border: none; +} +input[type=button].white:enabled:hover, button.hifi-edit-button.white:enabled:hover { + background: linear-gradient(#fff, #fff); + border: none; +} + +input[type=button]:active, button.hifi-edit-button:active { + background: linear-gradient(#343434, #343434); +} +input[type=button].red:active, button.hifi-edit-button.red:active { + background: linear-gradient(#94132e, #94132e); +} +input[type=button].blue:active, button.hifi-edit-button.blue:active { + background: linear-gradient(#1080b8, #1080b8); +} +input[type=button].white:active, button.hifi-edit-button.white:active { + background: linear-gradient(#afafaf, #afafaf); +} + +input[type=button]:disabled, button.hifi-edit-button:disabled { + color: #252525; + background: linear-gradient(#575757 20%, #252525 100%); +} + +input[type=button][pressed=pressed], button.hifi-edit-button[pressed=pressed] { + color: #00b4ef; +} + +input[type=checkbox] { + display: none; +} +input[type=checkbox] + label { + padding-left: 24px; + background-repeat: no-repeat; + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACpSURBVDhPY2xoaGD68+dPMSMjY9L////VgTQjAw4AlH8PxLOPHj1azWxjY1MBVNsBFBfBpwkEgNKcQGwtJyfHyATkF0KEiQdAzYlMQEIUyicFyDD9+/ePgRxMvsb///4zkIOZ/v0HmkAGHginYjGNGAzS+BpdkAj8mun/3//92DyPD//993cG88nTJ4+Zm5p/BSZeJYb/DEJADEzNOPF7hn8Mk69cvVIPAHN5pyfo70F5AAAAAElFTkSuQmCC); + cursor: pointer; +} +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=); +} +input.multi-diff[type=checkbox] + label { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFbSURBVDhPY2xoaGD68+dPMSMjY9L////VgTQjAw4AlH8PxLOPHj1azWxjY1MBVNsBFBfBpwkEgNKcQGwtJyfHyALkF4IE34gqM9zU9WT4wicG4mIA1l/fGIyOL2EQeP8EZEAiC5AQBUlcMQ5ieMXIwfDo9SeG73/+gRXDAAsTI4Pd9wdgTVAgw/Tv3z8GEP7Jwctw78M3DE0goPr6BoPludVgdTAM1wgCv//9B9PIQOPNDYaAGxtRNIEw03+gYhDGBtSBNgVc3wiWR8dM//4DTQBidKD++jqD//X1YDlsGMWpMKD26jqD79V1GM5DxihOZQWGntqrawy+V9ZiOA0dw21k/f6JwerzHQbvS2swTMeGGfPz8l8BLRP9KizDwP0WHk+EwGum/3//94M8y/nmEdZAwIb//vs7g/nk6ZPHzE3NvwITrxLDfwYhIAamZpz4PcM/hslXrl6pBwAmfz5iaAlAuAAAAABJRU5ErkJggg==); +} +input.multi-diff[type=checkbox] + label:hover { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFPSURBVDhPjZJBSwJBHMXfrG6rWEkl1MFDGOihDn2JIIrqc3QJunbyFhUkRieD+hYepWteuxctXiJ1Q5xmdmZ3bWZTUHezfvAu/3lv3n+HRblcTrbb7fN+v/8eBMFgFpxz13Gcu3q9bqHb7V4M5/9GhatE3cIsy0o99YBKC3jliCWbBK43gK0MoDI9otfTB/vPBC9Uwu4xMC8IzSOSBsFxIYNqMTGcAIYQAlodD3j5/IqENIc5gqt1P/SNZKhaXR0a5E/5BEcrwH1xEHrGZbiuC604DpZ81AoiPJ/WROM4e4sSt3kaaRopNrg7z1FZdSLmcU2saqrX20lTXC5/RFabFmk2m+GLnBnbWJMOThJv4SV/QRqNBjNNM9UiGeQHdDiejZSSG5TSG71zjnVivyVOKlNLlEqlx+xCds7zvU31G6Z938dvEq4QjLMH27ZPvwHFVYQr3h7uHwAAAABJRU5ErkJggg==); +} + +.rgb.fstuple .color-picker.multi-diff:after { + width: 20px; + height: 20px; + content: ' '; + background: darkgray; + display: flex; + clip-path: polygon(0 0, 0 100%, 100% 100%); +} + +.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; +} + +.icon { + font-family: HiFi-Glyphs; + color: white; +} + +#property-type-icon { + font-size: 50px; +} + +.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; +} + +#properties-list { + display: flex; + flex-direction: column; + + margin-top: 16px; +} + +#properties-list .fieldset { + position: relative; + /* 0.1px on the top is to prevent margin collapsing between this and it's first child */ + margin: 0 -21px 21px -21px; + padding: 0.1px 21px 0 21px; + border: none; + border-top: 1px rgb(90,90,90) solid; + box-shadow: 0 -1px 0 rgb(37,37,37); +} + +#properties-list .fieldset.fstuple, #properties-list .fieldset.fsrow { + margin-top: 21px; + border: none; + box-shadow: none; +} + +#properties-list > .fieldset[data-collapsed="true"] + .fieldset { + margin-top: 0; +} + +#properties-list > .fieldset[data-collapsed="true"] > *:not(div.legend) { + display: none !important; +} + +.section-header { + padding: 0 16px; + border-top: 1px rgb(90,90,90) solid; + box-shadow: 1px -1px 0 rgb(37,37,37); + border-bottom: 1px solid rgb(37, 37, 37); +} + +div.section-header, hr { + display: flex; + flex-flow: row nowrap; + padding: 10px 16px; + font-family: Raleway-Regular; + font-size: 12px; + color: #afafaf; + height: 28px; + text-transform: uppercase; + outline: none; + margin-bottom: 10px; + align-items: center; +} + +.section.minor { + margin: 0 21px; + box-shadow: 1px -1px 0 rgb(37,37,37); + border-left: 1px solid #575757; +} + +.container.property { + padding: 0 16px; +} + +.stretch { + width: 100%; +} + +div.section-header .label { + width: 100%; +} + +.section.minor div.section-header { + border-right: 0; +} + +div.section[collapsed="true"] > .container { + display: none; +} + +div.section[collapsed="true"], div.section[collapsed="true"] > .section-header { + margin-bottom: 0; +} + +.section.major { + margin-bottom: 20px; +} + +.section.minor.last { + margin-bottom: 20px; + border-bottom: 1px solid rgb(37,37,37); +} + +.section-header { + background-color: #373737; +} + + +.section-header span { + font-size: 30px; + font-family: HiFi-Glyphs; +} + +.triple-label { + text-transform: uppercase; + text-align: center; + padding: 6px 0; + cursor: default; +} + +.triple-item { + margin-right: 10px; +} + +.triple-item.rgb.fstuple { + display: block !important; +} + +.section-header[collapsed="true"] { + margin-bottom: -21px; +} + +#properties-list .sub-section-header { + border-top: none; + box-shadow: none; + margin-top: 8px; +} + +.sub-section-header + .property { + margin-top: 0; +} + +hr { + border: none; + padding-top: 2px; +} + +.property { + min-height: 28px; +} + +.property.checkbox { + width: auto; +} + +span.indented { + padding-left: 16px; +} + +.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; +} + +.property div.legend, .number div.legend { + display: table-cell; + vertical-align: middle; + font-family: Raleway-SemiBold; + font-size: 14px; +} +.property div.legend .unit, .number div.legend .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; +} +.value div.legend { + display: inline-block; + vertical-align: top; + width: 48px; +} +.value span { + font-size: 15px; + margin-right: 4px; +} + +#placeholder-property-type { + display: flex; + align-items: center; + width: auto; + margin-right: 20px; +} + +#placeholder-property-locked { + margin-left: 6px; +} + +.checkbox + .checkbox { + margin-top: 0; +} + +.checkbox-sub-props { + margin-top: 18px; +} + +.property .number { + float: left; +} +.property .number + .number { + margin-left: 10px; +} + +.property.range label{ + padding-bottom: 3px; +} +.property.range input[type=number]{ + margin-left: 0.8rem; + width: 5.4rem; + height: 1.8rem; +} + +.dropdown { + position: relative; + margin-bottom: -17px; +} + +.dropdown select { + clear: both; +} + +.dropdown dl { + clear: both; + cursor: pointer; + font-family: FiraSans-SemiBold; + font-size: 15px; + width: 292px; + height: 28px; + padding: 0 28px 0 12px; + color: #afafaf; + background: #575757; + position: relative; + display: flex; + align-items: center; +} + +.dropdown dl[dropped="true"] { + color: #404040; + background: linear-gradient(#afafaf, #afafaf); + z-index: 998; +} + +.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; + z-index: 999; +} +.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; +} + +.multiselect-box { + position: absolute; +} +.multiselect-box select { + font-family: FiraSans-SemiBold; + font-size: 15px; + color: #afafaf; + background-color: #252525; + border: none; + text-align-last: center; +} +.over-select { + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; +} +.multiselect-options { + position: absolute; + display: none; + border: none; +} +.multiselect-options span { + font-family: hifi-glyphs; + font-size: 13px; + color: #000000; +} +.multiselect-options label { + z-index: 2; + display: block; + font-family: FiraSans-SemiBold; + font-size: 11px; + color: #000000; + background-color: #afafaf; +} +.multiselect-options label:hover { + background-color: #1e90ff; +} +.multiselect-options input[type=checkbox] + label { + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH4goSADUOYnF4LQAAABl0RVh0Q29tbWVudABDcmVhdGVkIHdpdGggR0lNUFeBDhcAAAIMSURBVFjD7ZmxkqowFIZ/7mwJPen1AezV3t6hFvrQhweAHvrQ8wL2xt4HwD7ppd+tvHOvu0gCYdEZTsmAfpNzzpcTcAB84o3iD94sZuCx4+Pxwvl8dl4JcL1ef84lMQPPwBZDSgkp5XsASylBKUUYhhBCvDbw7XYDpRRKKTRNA8YYOOevC5ymKZRS/13jnHdCTwLMOW8tAc45GGNomuY1gKuq6lxFIQQopdMDXy4X5HmudW8URdMCSynBGNOG3Ww20wHf9dVWl4+wbav7a8CMsW9G+Cm22+1T2F8BzvMc1+u18z5CCJIkseNhKSX2+z2qqjLWl84zhBAURQHXde0A31Oa57nWbqSrLwDwPA9FUcD3fTtb82NKu8QOAHVda+srSRJt2E7gtpQKIXA4HH6csmzpyxj4dDo9TalSCpRS1HX9TV86RujSlxGwlBJpmnY+rJRCGIZ/s2BTX9qnZgBwHAee52mJ/l7nx+PRqr6MVtj3fZRlaVRf/5aGDX0Z17DrusiyrHfqhuqrt9aiKEIcx4OBTfU1aOMIggBlWYIQ0utP+uhr8CyxXC5RFIUxdBAE1srKePgxbcbVamWlnAZNa7rNSAhBlmWv8yLlWTPa0Nco83BbM2ZZZsUIowzwj80YxzEWi8VoB4IPGz9yb0YhBHa73agnGGtHJNd1R4ed9FVV33Awf6ebgd8b+Av9A/rq6s3hjgAAAABJRU5ErkJggg=='); + background-size: 11px 11px; + background-position: top 5px left 14px; +} +.multiselect-options input[type=checkbox]:enabled + label:hover { + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH4goSADUOYnF4LQAAABl0RVh0Q29tbWVudABDcmVhdGVkIHdpdGggR0lNUFeBDhcAAAIMSURBVFjD7ZmxkqowFIZ/7mwJPen1AezV3t6hFvrQhweAHvrQ8wL2xt4HwD7ppd+tvHOvu0gCYdEZTsmAfpNzzpcTcAB84o3iD94sZuCx4+Pxwvl8dl4JcL1ef84lMQPPwBZDSgkp5XsASylBKUUYhhBCvDbw7XYDpRRKKTRNA8YYOOevC5ymKZRS/13jnHdCTwLMOW8tAc45GGNomuY1gKuq6lxFIQQopdMDXy4X5HmudW8URdMCSynBGNOG3Ww20wHf9dVWl4+wbav7a8CMsW9G+Cm22+1T2F8BzvMc1+u18z5CCJIkseNhKSX2+z2qqjLWl84zhBAURQHXde0A31Oa57nWbqSrLwDwPA9FUcD3fTtb82NKu8QOAHVda+srSRJt2E7gtpQKIXA4HH6csmzpyxj4dDo9TalSCpRS1HX9TV86RujSlxGwlBJpmnY+rJRCGIZ/s2BTX9qnZgBwHAee52mJ/l7nx+PRqr6MVtj3fZRlaVRf/5aGDX0Z17DrusiyrHfqhuqrt9aiKEIcx4OBTfU1aOMIggBlWYIQ0utP+uhr8CyxXC5RFIUxdBAE1srKePgxbcbVamWlnAZNa7rNSAhBlmWv8yLlWTPa0Nco83BbM2ZZZsUIowzwj80YxzEWi8VoB4IPGz9yb0YhBHa73agnGGtHJNd1R4ed9FVV33Awf6ebgd8b+Av9A/rq6s3hjgAAAABJRU5ErkJggg=='); +} +.multiselect-options input[type=checkbox]:checked + label { + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH4goSADMveELP9QAAABl0RVh0Q29tbWVudABDcmVhdGVkIHdpdGggR0lNUFeBDhcAAAIqSURBVFjD7ZmxkqowFIb/7GwJPfT6APZib+9QC33o4QGghz70vIC9sfcBsE966bPNWlxnlQTDRWc4JUT4hpPz5SQSAAofFF/4sJiBx47v+wun04m8E+B6vVbzlJiBZ2CLIYRQQgj1EcBCCEUpRRRF4Jyrtwa+Xq+glEJKia7rkKYpGGPqbYHzPFdSyn+uMcZ6oScBZowpzvmje0jTVHVd9x7ATdMoxtjTMZxzUErV5MDn81mVZak1No7jab+wEEKlaaoNGwQBmQz4pq9H8/IeNo5jMmnRpWmKeyP8FZvN5insfwEuy1JdLpfecb7vI8uy3tb2Szelu91ONU1jtP9jjKmmabRgq6qC4zh2VrpbSsuy1FqNdPUFAK7roqoqeJ6ntXH4Mk1pn9gBoG1bbX1lWaYN2wv8KKWcc+z3+z+7LFv6MgY+Ho9PUyqlBKUUbduqe33pGKFPX0bAQgiV53nvj6WUiKIIt2K0qS/tXTMAEELguq6W6H/nOQ6Hg1V9GX1hz/NIXdckCALtB7Vta1VfxnPYcRwURUEeNSGmYaqvwVqL45gkSfIysKm+Xlo4wjAkdV3D9/1BLxmir5d7ieVySaqqMoYOw3CwEV5ufkyLcbVaIUkSq2d1xt2abjH6vo+iKKwfLA5uL58Vow19jdIPPyrGoiisGGGUBv6+GJMkwWKxGO2M+dvGQ36LEZxztd1uRz0Qt7ZFchwHY8NOelQ1NAjm/+lm4M8G/gH2zx33BSr7jAAAAABJRU5ErkJggg=='); +} +.multiselect-options input[type=checkbox]:checked + label:hover { + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH4goSADMveELP9QAAABl0RVh0Q29tbWVudABDcmVhdGVkIHdpdGggR0lNUFeBDhcAAAIqSURBVFjD7ZmxkqowFIb/7GwJPfT6APZib+9QC33o4QGghz70vIC9sfcBsE966bPNWlxnlQTDRWc4JUT4hpPz5SQSAAofFF/4sJiBx47v+wun04m8E+B6vVbzlJiBZ2CLIYRQQgj1EcBCCEUpRRRF4Jyrtwa+Xq+glEJKia7rkKYpGGPqbYHzPFdSyn+uMcZ6oScBZowpzvmje0jTVHVd9x7ATdMoxtjTMZxzUErV5MDn81mVZak1No7jab+wEEKlaaoNGwQBmQz4pq9H8/IeNo5jMmnRpWmKeyP8FZvN5insfwEuy1JdLpfecb7vI8uy3tb2Szelu91ONU1jtP9jjKmmabRgq6qC4zh2VrpbSsuy1FqNdPUFAK7roqoqeJ6ntXH4Mk1pn9gBoG1bbX1lWaYN2wv8KKWcc+z3+z+7LFv6MgY+Ho9PUyqlBKUUbduqe33pGKFPX0bAQgiV53nvj6WUiKIIt2K0qS/tXTMAEELguq6W6H/nOQ6Hg1V9GX1hz/NIXdckCALtB7Vta1VfxnPYcRwURUEeNSGmYaqvwVqL45gkSfIysKm+Xlo4wjAkdV3D9/1BLxmir5d7ieVySaqqMoYOw3CwEV5ufkyLcbVaIUkSq2d1xt2abjH6vo+iKKwfLA5uL58Vow19jdIPPyrGoiisGGGUBv6+GJMkwWKxGO2M+dvGQ36LEZxztd1uRz0Qt7ZFchwHY8NOelQ1NAjm/+lm4M8G/gH2zx33BSr7jAAAAABJRU5ErkJggg=='); +} + +.dynamic-multiselect { + position: relative; + top: 6px; + padding-bottom: 6px; +} + +div.refresh { + box-sizing: border-box; + padding-right: 44px; +} +div.refresh input[type="button"] { + float: right; + margin-right: -44px; + position: relative; + left: 10px; +} + +.color-picker { + box-sizing: border-box; + width: 26px; + height: 26px; + border: 3px solid #2B2B2B; + cursor: pointer; +} +.color-picker:focus { + outline: none; +} +.color-picker[active="true"] { + border-color: #000; +} + +.color-picker[disabled="disabled"] { + border-color: #afafaf; +} + +.colpick { + z-index: 3; +} +.colpick[disabled="disabled"] { + display: none !important; +} + +.rgb label { + float: left; + margin-top: 10px; + margin-left: 21px; +} +.rgb label + * { + clear: both; +} + +.rgb div.legend { + float: left; + margin-top: 10px; + margin-left: 21px; +} +.rgb div.legend + * { + clear: both; +} + +.draggable-number-container { + flex: 0 1 124px; +} +.draggable-number { + position: relative; + height: 28px; + flex: 0 1 124px; + display: flex; + align-items: center; +} + +.draggable-number .text { + position: absolute; + display: inline-block; + color: #afafaf; + background-color: #252525; + font-family: FiraSans-SemiBold; + font-size: 15px; + margin: 0; + padding: 0 16px; + height: 28px; + width: 100%; + line-height: 2; + box-sizing: border-box; + z-index: 1; +} +.draggable-number .text:hover { + cursor: ew-resize; +} +.draggable-number .left-arrow, .draggable-number .right-arrow { + position: absolute; + display: inline-block; + font-family: HiFi-Glyphs; + font-size: 20px; + z-index: 2; +} +.draggable-number span:hover { + cursor: default; +} +.draggable-number .left-arrow { + top: 3px; + left: 0; + transform: rotate(180deg); +} +.draggable-number .right-arrow { + top: 3px; + right: 0; +} +.draggable-number input[type=number] { + position: absolute; + right: 0; + width: 100%; +} +.draggable-number input[type=button] { + position: absolute; + top: 0; +} +.draggable-number input::-webkit-inner-spin-button { + -webkit-appearance: none; + visibility: hidden; +} +.draggable-number.fstuple { + height: 28px; + width: 124px; + left: 12px; +} +.draggable-number.fstuple + .draggable-number.fstuple { + margin-left: 28px; +} +.draggable-number.fstuple input { + right: -10px; +} +.draggable-number.fstuple .sublabel { + position: absolute; + top: 6px; + left: -16px; + font-family: FiraSans-SemiBold; + font-size: 15px; +} + +.rect .rect-row { + margin-bottom: 8px; +} + +.row .property { + width: auto; + display: inline-block; + margin-right: 6px; +} +.row .property:last-child { + margin-right: 0; +} +.row .property input { + clear: both; + float: left; +} + +.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,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'); +} +.texture-image.no-preview { + background-image: url('data:image/png;base64,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'); +} + +.two-column { + display: table; + width: 100%; +} +.two-column > div { + display: table-cell; + width: 50%; +} + +#properties-list .fieldset .two-column { + padding-top: 10px; + display: flex; +} + +#properties-list .two-column .fieldset { + width: 50%; + margin: 0; + padding: 0; + border-top: none; + box-shadow: none; +} + +#properties-list .two-column .column { + position: relative; + top: -10px; +} + +#properties-list .two-column .fieldset div.legend { + width: 100%; + margin: 21px -21px 0 -21px; + padding: 16px 0 0 21px; + font-family: Raleway-Regular; + font-size: 12px; + color: #afafaf; + height: 10px; + text-transform: uppercase; + outline: none; +} + +#properties-list .two-column + .property { + margin-top: 6px; +} + +.fieldset .checkbox-sub-props { + margin-top: 0; +} + +.fieldset .checkbox-sub-props .property:first-child { + margin-top: 0; +} + +.column { + vertical-align: top; +} + +.indent { + margin-left: 24px; +} + +::-webkit-scrollbar { + width: 20px; + height: 10px; +} +::-webkit-scrollbar-track { + background-color: #2e2e2e; +} +#entity-table-scroll::-webkit-scrollbar-track { + border-bottom-right-radius: 7px; +} + +::-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; +} + + +div#grid-section, body#entity-list-body { + padding-bottom: 0; + margin: 16px; +} + +#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; +} + +#entity-list { + position: relative; /* New positioning context. */ +} + +#filter-area { + padding-right: 168px; + padding-bottom: 24px; +} + +#filter-type-multiselect-box select { + border-radius: 14.5px; + width: 107px; + height: 28px; +} +#filter-type-options { + position: absolute; + top: 48px; +} +#filter-type-options div { + position: relative; + height: 22px; +} +#filter-type-options span { + position: relative; + top: 3px; + font-family: HiFi-Glyphs; + font-size: 13px; + color: #000000; + padding-left: 6px; + padding-right: 4px; +} +#filter-type-options label { + position: absolute; + top: -20px; + z-index: 2; + height: 22px; + width: 200px; + padding-top: 1px; +} +#filter-type-options-buttons { + top: -22px; + width: 224px; + z-index: 2; + background-color: #afafaf; + padding-bottom: 6px; +} +#filter-type-options input[type=button] { + position: relative; + left: 16px; + z-index: 3; + height: 23px; + min-width: 60px; + font-size: 10px; + color: #000; + background: linear-gradient(#afafaf 20%, #808080 100%); +} +#filter-type-options input[type=button]:enabled:hover { + background: linear-gradient(#afafaf 20%, #575757 100%); +} + +#filter-search-and-icon { + position: relative; + left: 118px; + width: calc(100% - 126px); +} + +#filter-in-view { + position: absolute; + top: 0; + right: 126px; +} + +#filter-radius-and-unit { + position: relative; + float: right; + margin-right: -168px; + top: -45px; +} +#filter-radius-and-unit label { + margin-left: 2px; +} +#filter-radius-and-unit span { + position: relative; + top: 25px; + right: 9px; + z-index: 2; + font-style: italic; +} +#filter-radius-and-unit input { + width: 120px; + border-radius: 14.5px; + font-style: italic; +} +#filter-radius-and-unit input[type=number]::-webkit-inner-spin-button { + display: none; +} + +#entity-list-footer { + padding-top: 9px; +} + +#footer-text { + float: right; + padding-top: 12px; + padding-right: 22px; +} + +input[type=button]#export { + height: 38px; + width: 180px; +} + +#no-entities { + display: none; + position: absolute; + top: 80px; + padding: 12px; + font-family: FiraSans-SemiBold; + font-size: 15px; + font-style: italic; + color: #afafaf; +} + +#entity-table-columns-multiselect { + position: absolute; + top: 51px; + right: 22px; +} +#entity-table-columns-multiselect-box select { + height: 28px; + width: 20px; + background-color: #1c1c1c; + border-top-right-radius: 7px; +} +#entity-table-columns-options { + position: absolute; + top: 50px; + right: 110px; +} +#entity-table-columns-options div { + position: relative; + height: 22px; +} +#entity-table-columns-options label { + position: absolute; + top: -22px; + height: 22px; + width: 100px; + padding-top: 4px; +} +#entity-table-columns-options input[type=checkbox] + label { + padding-left: 30px; +} + +#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; + border-bottom: 2px solid #575757; + border-bottom-left-radius: 7px; + border-bottom-right-radius: 7px; + 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 { + 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; +} + +#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 thead .sort-order { + display: inline-block; + width: 8px; + margin: -5px 0 -3px 0; + vertical-align: middle; +} + +#entity-table thead .resizer { + position: absolute; + top: 1px; + height: 26px; + width: 10px; + cursor: col-resize; +} + +#entity-table .dragging { + background-color: #b3ecff; +} + +#entity-table td { + box-sizing: border-box; +} +#entity-table td.glyph { + text-align: center; + padding: 0; +} + +#properties-base { + border-top: none !important; + box-shadow: none !important; + margin-bottom: 5px !important; +} + +#properties-base #property-type-icon { + font-family: HiFi-Glyphs; + font-size: 31px; + color: #00b4ef; + margin: -4px 12px -4px -2px; + width: auto; + display: none; +} + +#properties-base #property-type { + padding: 5px 24px 5px 0; + border-right: 1px solid #808080; + width: auto; + display: inline-block; +} + +#properties-base .checkbox label span { + font-family: HiFi-Glyphs; + font-size: 20px; + padding-right: 6px; + vertical-align: top; + position: relative; + top: -4px; +} + +#properties-base input[type=checkbox]:checked + label span { + color: #ffffff; +} + +#id label { + width: 24px; +} +#property-id { + display: inline-block; +} +#property-id::selection { + color: #000000; + background-color: #00b4ef; +} + +input#property-scale-button-rescale { + min-width: 50px; + left: 152px; +} +input#property-scale-button-reset { + margin-right: 0; + left: 250px; +} + +#property-userData-static, +#property-materialData-static { + display: none; + z-index: 99; + position: absolute; + width: 96%; + padding-left: 1%; + margin-top: 5px; + margin-bottom: 10px; + background-color: #2e2e2e; +} + +#property-userData-saved, +#property-materialData-saved { + margin-top: 5px; + font-size: 16px; + display: none; +} + + +#div-property-collisionSoundURL[style*="display: none"] + .property { + margin-top: 0; +} + +.context-menu { + display: none; + position: fixed; + color: #000000; + background-color: #afafaf; + padding: 5px 0 5px 0; + cursor: default; +} +.context-menu li { + list-style-type: none; + padding: 4px 18px 4px 18px; + margin: 0; + white-space: nowrap; +} +.context-menu li:hover { + background-color: #e3e3e3; +} +.context-menu li.separator { + border-top: 1px solid #333333; + margin: 5px 5px; + padding: 0 0; +} +.context-menu li.disabled { + color: #333333; +} +.context-menu li.separator:hover, .context-menu li.disabled:hover { + background-color: #afafaf; +} + +input.rename-entity { + height: 100%; + width: 100%; + border: none; + font-family: FiraSans-SemiBold; + font-size: 15px; + /* need this to show the text cursor when the input field is empty */ + padding-left: 2px; +} + +.create-app-tooltip { + z-index: 100; + position: absolute; + background: #6a6a6a; + border: 1px solid black; + width: 258px; + min-height: 20px; + padding: 5px; + z-index: 100; +} + +.create-app-tooltip .create-app-tooltip-description { + font-size: 12px; + font-style: italic; + color: #ffffff; +} + +.create-app-tooltip .create-app-tooltip-js-attribute { + font-family: Raleway-SemiBold; + font-size: 11px; + color: #000000; + bottom: 0; + margin-top: 5px; +} + +#toggle-space-mode::before { + font-family: HiFi-Glyphs; + font-size: 20px; + text-transform: none; + min-width: 32px; + padding-right: 4px; + vertical-align: middle; +} + +#toggle-space-mode.space-mode-local::before { + content: "m"; +} + +#toggle-space-mode.space-mode-world::before { + content: "\e02c"; +} + +.container { + display: flex; + flex-flow: row nowrap; + margin-bottom: 8px; + min-height: 28px; +} + +.container > label { + margin-top: 6px; + width: 160px; + min-width: 160px; + max-width: 160px; +} + +.container > div.checkbox { + padding-top: 6px; +} + +.container > .value { + width: 100%; +} + +.container .row { + display: flex; + flex-flow: row nowrap; +} + +.container.shrink { + width: min-content; +} + +.fstuple { + display: flex; + flex-flow: row; +} +.fstuple input { + margin-left: 4px; + margin-right: 10px; +} +.fstuple label.red, .fstuple label.x, .fstuple label.w { + color: #C62147; +} +.fstuple label.green, .fstuple label.y, .fstuple label.h { + color: #359D85; +} +.fstuple label.blue, .fstuple label.z { + color: #0093C5; +} + +.xyz.fstuple, .pyr.fstuple { + position: relative; + left: -12px; + min-width: 50px; + width: 100px; +} + +.rgb.fstuple .tuple { + display: none; +} + +input.number-slider { + background: #575757; + border-radius: 4px; + color: white; +} + +.fstuple > div { + display: flex; + align-items: center; + justify-content: left; +} + +.flex-row { + display: flex; + flex-flow: row; +} + +.flex-column { + display: flex; + flex-flow: column; +} + +.flex-center { + align-items: center; +} + +.flex-evenly-spaced { + flex: 1; +} + +#property-serverScripts-status { + font-family: Raleway-Light; + font-size: 14px; + margin: 6px 0; + cursor: default; +} + +#property-name, #property-id { + display: flex; + width: 100%; +} + +.spacemode-hidden { + display: none; +} + +#placeholder-property-type { + min-width: 0; +} + +.collapse-icon { + cursor: pointer; +} + +#property-userData-editor.error { + border: 2px solid red; +} + +#property-userData-editorStatus { + color: white; + background-color: red; + padding: 5px; + display: none; + cursor: pointer; +} + +#property-materialData-editor.error { + border: 2px solid red; +} + +#property-materialData-editorStatus { + color: white; + background-color: red; + padding: 5px; + display: none; + cursor: pointer; +} + +input[type=number].hide-spinner::-webkit-inner-spin-button { + -webkit-appearance: none; + visibility: hidden; +} + +div.jsoneditor-menu a.jsoneditor-poweredBy { + display: none; +} +td.zoneItem { + width: 100%; +} + +select.zoneSelect { + clear: both; + cursor: pointer; + font-family: FiraSans-SemiBold; + font-size: 15px; + width: 90%; + height: 28px; + padding: 0 28px 0 12px; + color: #afafaf; + background: #575757; + position: relative; + display: inline; + border: 0px; + align-items: center; + outline: none; +} + +div.multiZoneSelToolbar { + padding: 0px; +} + From c96591367b19138c9224b41ec45ff6728ca174e3 Mon Sep 17 00:00:00 2001 From: Alezia Kurdis <60075796+AleziaKurdis@users.noreply.github.com> Date: Fri, 8 May 2020 23:41:52 -0400 Subject: [PATCH 085/160] Fix the wrong merge --- scripts/system/create/edit.js | 8707 +++++++++++---------------------- 1 file changed, 2909 insertions(+), 5798 deletions(-) diff --git a/scripts/system/create/edit.js b/scripts/system/create/edit.js index ee527b3704..ddf0c3fa2f 100644 --- a/scripts/system/create/edit.js +++ b/scripts/system/create/edit.js @@ -1,5798 +1,2909 @@ -// edit.js -// -// Created by Brad Hefta-Gaub on 10/2/14. -// Persist toolbar by HRS 6/11/15. -// Copyright 2014 High Fidelity, Inc. -// Copyright 2020 Vircadia contributors. -// -// This script allows you to edit entities with a new UI/UX for mouse and trackpad based editing -// -// 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, 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, OverlaySystemWindow, - keyUpEventFromUIWindow:true */ - -(function() { // BEGIN LOCAL_SCOPE - -"use strict"; - -var EDIT_TOGGLE_BUTTON = "com.highfidelity.interface.system.editButton"; - -var CONTROLLER_MAPPING_NAME = "com.highfidelity.editMode"; - -Script.include([ - "../libraries/stringHelpers.js", - "../libraries/dataViewHelpers.js", - "../libraries/progressDialog.js", - "../libraries/ToolTip.js", - "../libraries/entityCameraTool.js", - "../libraries/utils.js", - "../libraries/entityIconOverlayManager.js", - "../libraries/gridTool.js", - "entityList/entityList.js", - "entitySelectionTool/entitySelectionTool.js" -]); - -var CreateWindow = Script.require('./modules/createWindow.js'); - -var TITLE_OFFSET = 60; -var CREATE_TOOLS_WIDTH = 490; -var MAX_DEFAULT_ENTITY_LIST_HEIGHT = 942; - -var DEFAULT_IMAGE = "https://hifi-content.s3.amazonaws.com/DomainContent/production/no-image.jpg"; - -var createToolsWindow = new CreateWindow( - Script.resolvePath("qml/EditTools.qml"), - 'Create Tools', - 'com.highfidelity.create.createToolsWindow', - function () { - var windowHeight = Window.innerHeight - TITLE_OFFSET; - if (windowHeight > MAX_DEFAULT_ENTITY_LIST_HEIGHT) { - windowHeight = MAX_DEFAULT_ENTITY_LIST_HEIGHT; - } - return { - size: { - x: CREATE_TOOLS_WIDTH, - y: windowHeight - }, - position: { - x: Window.x + Window.innerWidth - CREATE_TOOLS_WIDTH, - y: Window.y + TITLE_OFFSET - } - } - }, - false -); - -/** - * @description Returns true in case we should use the tablet version of the CreateApp - * @returns boolean - */ -var shouldUseEditTabletApp = function() { - return HMD.active || (!HMD.active && !Settings.getValue("desktopTabletBecomesToolbar", true)); -}; - - -var selectionDisplay = SelectionDisplay; -var selectionManager = SelectionManager; - -var PARTICLE_SYSTEM_URL = Script.resolvePath("assets/images/icon-particles.svg"); -var POINT_LIGHT_URL = Script.resolvePath("assets/images/icon-point-light.svg"); -var SPOT_LIGHT_URL = Script.resolvePath("assets/images/icon-spot-light.svg"); -var ZONE_URL = Script.resolvePath("assets/images/icon-zone.svg"); - -var entityIconOverlayManager = new EntityIconOverlayManager(['Light', 'ParticleEffect', 'Zone'], function(entityID) { - var properties = Entities.getEntityProperties(entityID, ['type', 'isSpotlight']); - if (properties.type === 'Light') { - return { - url: properties.isSpotlight ? SPOT_LIGHT_URL : POINT_LIGHT_URL, - }; - } else if (properties.type === 'Zone') { - return { - url: ZONE_URL, - }; - } else { - return { - url: PARTICLE_SYSTEM_URL, - }; - } -}); - -var cameraManager = new CameraManager(); - -var grid = new Grid(); -var gridTool = new GridTool({ - horizontalGrid: grid, - createToolsWindow: createToolsWindow, - shouldUseEditTabletApp: shouldUseEditTabletApp -}); -gridTool.setVisible(false); - -var EntityShapeVisualizer = Script.require('./modules/entityShapeVisualizer.js'); -var entityShapeVisualizer = new EntityShapeVisualizer(["Zone"]); - -var entityListTool = new EntityListTool(shouldUseEditTabletApp); - -selectionManager.addEventListener(function () { - selectionDisplay.updateHandles(); - entityIconOverlayManager.updatePositions(); - entityShapeVisualizer.setEntities(selectionManager.selections); -}); - -var DEGREES_TO_RADIANS = Math.PI / 180.0; -var RADIANS_TO_DEGREES = 180.0 / Math.PI; - -var MIN_ANGULAR_SIZE = 2; -var MAX_ANGULAR_SIZE = 45; -var allowLargeModels = true; -var allowSmallModels = true; - -var DEFAULT_DIMENSION = 0.20; - -var DEFAULT_DIMENSIONS = { - x: DEFAULT_DIMENSION, - y: DEFAULT_DIMENSION, - z: DEFAULT_DIMENSION -}; - -var DEFAULT_LIGHT_DIMENSIONS = Vec3.multiply(20, DEFAULT_DIMENSIONS); - -var MENU_AUTO_FOCUS_ON_SELECT = "Auto Focus on Select"; -var MENU_EASE_ON_FOCUS = "Ease Orientation on Focus"; -var MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE = "Show Lights and Particle Systems in Create Mode"; -var MENU_SHOW_ZONES_IN_EDIT_MODE = "Show Zones in Create Mode"; - -var MENU_CREATE_ENTITIES_GRABBABLE = "Create Entities As Grabbable (except Zones, Particles, and Lights)"; -var MENU_ALLOW_SELECTION_LARGE = "Allow Selecting of Large Models"; -var MENU_ALLOW_SELECTION_SMALL = "Allow Selecting of Small Models"; -var MENU_ALLOW_SELECTION_LIGHTS = "Allow Selecting of Lights"; - -var SETTING_AUTO_FOCUS_ON_SELECT = "autoFocusOnSelect"; -var SETTING_EASE_ON_FOCUS = "cameraEaseOnFocus"; -var SETTING_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE = "showLightsAndParticlesInEditMode"; -var SETTING_SHOW_ZONES_IN_EDIT_MODE = "showZonesInEditMode"; - -var SETTING_EDIT_PREFIX = "Edit/"; - - -var CREATE_ENABLED_ICON = "icons/tablet-icons/edit-i.svg"; -var CREATE_DISABLED_ICON = "icons/tablet-icons/edit-disabled.svg"; - -// marketplace info, etc. not quite ready yet. -var SHOULD_SHOW_PROPERTY_MENU = false; -var INSUFFICIENT_PERMISSIONS_ERROR_MSG = "You do not have the necessary permissions to edit on this domain."; -var INSUFFICIENT_PERMISSIONS_IMPORT_ERROR_MSG = "You do not have the necessary permissions to place items on this domain."; - -var isActive = false; -var createButton = null; - -var IMPORTING_SVO_OVERLAY_WIDTH = 144; -var IMPORTING_SVO_OVERLAY_HEIGHT = 30; -var IMPORTING_SVO_OVERLAY_MARGIN = 5; -var IMPORTING_SVO_OVERLAY_LEFT_MARGIN = 34; -var importingSVOImageOverlay = Overlays.addOverlay("image", { - imageURL: Script.resolvePath("assets/images/hourglass.svg"), - width: 20, - height: 20, - alpha: 1.0, - x: Window.innerWidth - IMPORTING_SVO_OVERLAY_WIDTH, - y: Window.innerHeight - IMPORTING_SVO_OVERLAY_HEIGHT, - visible: false -}); -var importingSVOTextOverlay = Overlays.addOverlay("text", { - font: { - size: 14 - }, - text: "Importing SVO...", - leftMargin: IMPORTING_SVO_OVERLAY_LEFT_MARGIN, - x: Window.innerWidth - IMPORTING_SVO_OVERLAY_WIDTH - IMPORTING_SVO_OVERLAY_MARGIN, - y: Window.innerHeight - IMPORTING_SVO_OVERLAY_HEIGHT - IMPORTING_SVO_OVERLAY_MARGIN, - width: IMPORTING_SVO_OVERLAY_WIDTH, - height: IMPORTING_SVO_OVERLAY_HEIGHT, - backgroundColor: { - red: 80, - green: 80, - blue: 80 - }, - backgroundAlpha: 0.7, - visible: false -}); - -var MARKETPLACE_URL = Account.metaverseServerURL + "/marketplace"; -var marketplaceWindow = new OverlayWebWindow({ - title: 'Marketplace', - source: "about:blank", - width: 900, - height: 700, - visible: false -}); - -function showMarketplace(marketplaceID) { - var url = MARKETPLACE_URL; - if (marketplaceID) { - url = url + "/items/" + marketplaceID; - } - marketplaceWindow.setURL(url); - marketplaceWindow.setVisible(true); - marketplaceWindow.raise(); - - UserActivityLogger.logAction("opened_marketplace"); -} - -function hideMarketplace() { - marketplaceWindow.setVisible(false); - marketplaceWindow.setURL("about:blank"); -} - -// function toggleMarketplace() { -// if (marketplaceWindow.visible) { -// hideMarketplace(); -// } else { -// showMarketplace(); -// } -// } - -function adjustPositionPerBoundingBox(position, direction, registration, dimensions, orientation) { - // Adjust the position such that the bounding box (registration, dimensions 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 GRABBABLE_ENTITIES_MENU_CATEGORY = "Edit"; - -// Handles any edit mode updates required when domains have switched -function checkEditPermissionsAndUpdate() { - if ((createButton === null) || (createButton === undefined)) { - //--EARLY EXIT--( nothing to safely update ) - return; - } - - var hasRezPermissions = (Entities.canRez() || Entities.canRezTmp() || Entities.canRezCertified() || Entities.canRezTmpCertified()); - createButton.editProperties({ - icon: (hasRezPermissions ? CREATE_ENABLED_ICON : CREATE_DISABLED_ICON), - captionColor: (hasRezPermissions ? "#ffffff" : "#888888"), - }); - - if (!hasRezPermissions && isActive) { - that.setActive(false); - tablet.gotoHomeScreen(); - } -} - -// Copies the properties in `b` into `a`. `a` will be modified. -function copyProperties(a, b) { - for (var key in b) { - a[key] = b[key]; - } - return a; -} - -const DEFAULT_DYNAMIC_PROPERTIES = { - dynamic: true, - damping: 0.39347, - angularDamping: 0.39347, - gravity: { x: 0, y: -9.8, z: 0 }, -}; - -const DEFAULT_NON_DYNAMIC_PROPERTIES = { - dynamic: false, - damping: 0, - angularDamping: 0, - gravity: { x: 0, y: 0, z: 0 }, -}; - -const DEFAULT_ENTITY_PROPERTIES = { - All: { - description: "", - rotation: { x: 0, y: 0, z: 0, w: 1 }, - collidesWith: "static,dynamic,kinematic,otherAvatar,myAvatar", - collisionSoundURL: "", - cloneable: false, - ignoreIK: true, - canCastShadow: true, - href: "", - script: "", - serverScripts:"", - velocity: { - x: 0, - y: 0, - z: 0 - }, - angularVelocity: { - x: 0, - y: 0, - z: 0 - }, - restitution: 0.5, - friction: 0.5, - density: 1000, - dynamic: false, - }, - Shape: { - shape: "Box", - dimensions: { x: 0.2, y: 0.2, z: 0.2 }, - color: { red: 0, green: 180, blue: 239 }, - }, - Text: { - text: "Text", - dimensions: { - x: 0.65, - y: 0.3, - z: 0.01 - }, - textColor: { red: 255, green: 255, blue: 255 }, - backgroundColor: { red: 0, green: 0, blue: 0 }, - lineHeight: 0.06, - faceCamera: false, - }, - Zone: { - dimensions: { - x: 10, - y: 10, - z: 10 - }, - flyingAllowed: true, - ghostingAllowed: true, - filter: "", - keyLightMode: "inherit", - keyLightColor: { red: 255, green: 255, blue: 255 }, - keyLight: { - intensity: 1.0, - direction: { - x: 0.0, - y: -0.707106769084930, // 45 degrees - z: 0.7071067690849304 - }, - castShadows: true - }, - ambientLightMode: "inherit", - ambientLight: { - ambientIntensity: 0.5, - ambientURL: "" - }, - hazeMode: "inherit", - haze: { - hazeRange: 1000, - hazeAltitudeEffect: false, - hazeBaseRef: 0, - hazeColor: { - red: 128, - green: 154, - blue: 179 - }, - hazeBackgroundBlend: 0, - hazeEnableGlare: false, - hazeGlareColor: { - red: 255, - green: 229, - blue: 179 - }, - }, - shapeType: "box", - bloomMode: "inherit", - avatarPriority: "inherit", - screenshare: "inherit", - }, - Model: { - collisionShape: "none", - compoundShapeURL: "", - animation: { - url: "", - running: false, - allowTranslation: false, - loop: true, - hold: false, - currentFrame: 0, - firstFrame: 0, - lastFrame: 100000, - fps: 30.0, - } - }, - Image: { - dimensions: { - x: 0.5385, - y: 0.2819, - z: 0.0092 - }, - shapeType: "box", - collisionless: true, - keepAspectRatio: false, - imageURL: DEFAULT_IMAGE - }, - Web: { - dimensions: { - x: 1.6, - y: 0.9, - z: 0.01 - }, - sourceUrl: "https://projectathena.io/", - dpi: 30, - }, - ParticleEffect: { - lifespan: 1.5, - maxParticles: 10, - textures: "https://content.highfidelity.com/DomainContent/production/Particles/wispy-smoke.png", - emitRate: 5.5, - emitSpeed: 0, - speedSpread: 0, - emitDimensions: { x: 0, y: 0, z: 0 }, - emitOrientation: { x: 0, y: 0, z: 0, w: 1 }, - emitterShouldTrail: true, - particleRadius: 0.25, - radiusStart: 0, - radiusSpread: 0, - particleColor: { - red: 255, - green: 255, - blue: 255 - }, - colorSpread: { - red: 0, - green: 0, - blue: 0 - }, - alpha: 0, - alphaStart: 1, - alphaSpread: 0, - emitAcceleration: { - x: 0, - y: 2.5, - z: 0 - }, - accelerationSpread: { - x: 0, - y: 0, - z: 0 - }, - particleSpin: 0, - spinSpread: 0, - rotateWithEntity: false, - polarStart: 0, - polarFinish: Math.PI, - azimuthStart: -Math.PI, - azimuthFinish: Math.PI - }, - Light: { - color: { red: 255, green: 255, blue: 255 }, - intensity: 5.0, - dimensions: DEFAULT_LIGHT_DIMENSIONS, - falloffRadius: 1.0, - isSpotlight: false, - exponent: 1.0, - cutoff: 75.0, - }, -}; - -var toolBar = (function () { - var EDIT_SETTING = "io.highfidelity.isEditing"; // for communication with other scripts - var that = {}, - toolBar, - activeButton = null, - systemToolbar = null, - dialogWindow = null, - tablet = null; - - function createNewEntity(requestedProperties) { - var dimensions = requestedProperties.dimensions ? requestedProperties.dimensions : DEFAULT_DIMENSIONS; - var position = getPositionToCreateEntity(); - var entityID = null; - - var properties = {}; - - copyProperties(properties, DEFAULT_ENTITY_PROPERTIES.All); - - var type = requestedProperties.type; - if (type === "Box" || type === "Sphere") { - copyProperties(properties, DEFAULT_ENTITY_PROPERTIES.Shape); - } else { - copyProperties(properties, DEFAULT_ENTITY_PROPERTIES[type]); - } - - // We apply the requested properties first so that they take priority over any default properties. - copyProperties(properties, requestedProperties); - - if (properties.dynamic) { - copyProperties(properties, DEFAULT_DYNAMIC_PROPERTIES); - } else { - copyProperties(properties, DEFAULT_NON_DYNAMIC_PROPERTIES); - } - - - if (position !== null && position !== undefined) { - 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", "Image", "Web", "Material"]; - 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 }; - registration = DEFAULT_REGISTRATION; - } - - var orientation = properties.orientation; - if (orientation === undefined) { - properties.orientation = MyAvatar.orientation; - var DEFAULT_ORIENTATION = properties.orientation; - orientation = DEFAULT_ORIENTATION; - } else { - // If the orientation is already defined, we perform the corresponding rotation assuming that - // our start referential is the avatar referential. - properties.orientation = Quat.multiply(MyAvatar.orientation, properties.orientation); - var DEFAULT_ORIENTATION = properties.orientation; - orientation = DEFAULT_ORIENTATION; - } - - position = adjustPositionPerBoundingBox(position, direction, registration, dimensions, orientation); - } - - position = grid.snapToSurface(grid.snapToGrid(position, false, dimensions), dimensions); - properties.position = position; - - if (!properties.grab) { - properties.grab = {}; - if (Menu.isOptionChecked(MENU_CREATE_ENTITIES_GRABBABLE) && - !(properties.type === "Zone" || properties.type === "Light" || properties.type === "ParticleEffect" || properties.type === "Web")) { - properties.grab.grabbable = true; - } else { - properties.grab.grabbable = false; - } - } - - if (type === "Model") { - properties.visible = false; - } - - entityID = Entities.addEntity(properties); - - var dimensionsCheckCallback = function(){ - 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", "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(false, this); - } else if (dimensionsCheckCount < MAX_DIMENSIONS_CHECKS) { - Script.setTimeout(dimensionsCheckFunction, DIMENSIONS_CHECK_INTERVAL); - } - }; - Script.setTimeout(dimensionsCheckFunction, DIMENSIONS_CHECK_INTERVAL); - } - } - // Make sure the entity is loaded before we try to figure out - // its dimensions. - var MAX_LOADED_CHECKS = 10; - var LOADED_CHECK_INTERVAL = 100; - var isLoadedCheckCount = 0; - var entityIsLoadedCheck = function() { - isLoadedCheckCount++; - if (isLoadedCheckCount === MAX_LOADED_CHECKS || Entities.isLoaded(entityID)) { - var naturalDimensions = Entities.getEntityProperties(entityID, "naturalDimensions").naturalDimensions - Entities.editEntity(entityID, { - visible: true, - dimensions: naturalDimensions - }) - dimensionsCheckCallback(); - return; - } - Script.setTimeout(entityIsLoadedCheck, LOADED_CHECK_INTERVAL); - } - Script.setTimeout(entityIsLoadedCheck, LOADED_CHECK_INTERVAL); - - SelectionManager.addEntity(entityID, false, this); - SelectionManager.saveProperties(); - pushCommandForSelections([{ - entityID: entityID, - properties: properties - }], [], true); - - } else { - Window.notifyEditError("Can't create " + properties.type + ": " + - properties.type + " would be out of bounds."); - } - - selectionManager.clearSelections(this); - entityListTool.sendUpdate(); - selectionManager.setSelections([entityID], this); - - Window.setFocus(); - - return entityID; - } - - function closeExistingDialogWindow() { - if (dialogWindow) { - dialogWindow.close(); - dialogWindow = null; - } - } - - function cleanup() { - that.setActive(false); - if (tablet) { - tablet.removeButton(activeButton); - } - if (systemToolbar) { - systemToolbar.removeButton(EDIT_TOGGLE_BUTTON); - } - } - - var buttonHandlers = {}; // only used to tablet mode - - function addButton(name, handler) { - buttonHandlers[name] = handler; - } - - var SHAPE_TYPE_NONE = 0; - var SHAPE_TYPE_SIMPLE_HULL = 1; - var SHAPE_TYPE_SIMPLE_COMPOUND = 2; - var SHAPE_TYPE_STATIC_MESH = 3; - var SHAPE_TYPE_BOX = 4; - var SHAPE_TYPE_SPHERE = 5; - var DYNAMIC_DEFAULT = false; - - var MATERIAL_MODE_UV = 0; - var MATERIAL_MODE_PROJECTED = 1; - - function handleNewModelDialogResult(result) { - if (result) { - var url = result.url; - var shapeType; - switch (result.collisionShapeIndex) { - case SHAPE_TYPE_SIMPLE_HULL: - shapeType = "simple-hull"; - break; - case SHAPE_TYPE_SIMPLE_COMPOUND: - shapeType = "simple-compound"; - break; - case SHAPE_TYPE_STATIC_MESH: - shapeType = "static-mesh"; - break; - case SHAPE_TYPE_BOX: - shapeType = "box"; - break; - case SHAPE_TYPE_SPHERE: - shapeType = "sphere"; - break; - default: - shapeType = "none"; - } - - var dynamic = result.dynamic !== null ? result.dynamic : DYNAMIC_DEFAULT; - if (shapeType === "static-mesh" && dynamic) { - // The prompt should prevent this case - print("Error: model cannot be both static mesh and dynamic. This should never happen."); - } else if (url) { - createNewEntity({ - type: "Model", - modelURL: url, - shapeType: shapeType, - grab: { - grabbable: result.grabbable - }, - dynamic: dynamic, - }); - } - } - } - - function handleNewMaterialDialogResult(result) { - if (result) { - var materialURL = result.textInput; - //var materialMappingMode; - //switch (result.comboBox) { - // case MATERIAL_MODE_PROJECTED: - // materialMappingMode = "projected"; - // break; - // default: - // shapeType = "uv"; - //} - var materialData = ""; - if (materialURL.startsWith("materialData")) { - materialData = JSON.stringify({ - "materials": {} - }); - } - - var DEFAULT_LAYERED_MATERIAL_PRIORITY = 1; - if (materialURL) { - createNewEntity({ - type: "Material", - materialURL: materialURL, - //materialMappingMode: materialMappingMode, - priority: DEFAULT_LAYERED_MATERIAL_PRIORITY, - materialData: materialData - }); - } - } - } - - function fromQml(message) { // messages are {method, params}, like json-rpc. See also sendToQml. - var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); - tablet.popFromStack(); - switch (message.method) { - case "newModelDialogAdd": - handleNewModelDialogResult(message.params); - closeExistingDialogWindow(); - break; - case "newModelDialogCancel": - closeExistingDialogWindow(); - break; - case "newEntityButtonClicked": - buttonHandlers[message.params.buttonName](); - break; - case "newMaterialDialogAdd": - handleNewMaterialDialogResult(message.params); - closeExistingDialogWindow(); - break; - case "newMaterialDialogCancel": - closeExistingDialogWindow(); - break; - } - } - - var entitiesToDelete = []; - var deletedEntityTimer = null; - var DELETE_ENTITY_TIMER_TIMEOUT = 100; - - function checkDeletedEntityAndUpdate(entityID) { - // Allow for multiple entity deletes before updating the entities selected. - entitiesToDelete.push(entityID); - if (deletedEntityTimer !== null) { - Script.clearTimeout(deletedEntityTimer); - } - deletedEntityTimer = Script.setTimeout(function () { - if (entitiesToDelete.length > 0) { - selectionManager.removeEntities(entitiesToDelete, this); - } - entityListTool.removeEntities(entitiesToDelete, selectionManager.selections); - entitiesToDelete = []; - deletedEntityTimer = null; - }, DELETE_ENTITY_TIMER_TIMEOUT); - } - - function initialize() { - Script.scriptEnding.connect(cleanup); - Window.domainChanged.connect(function () { - if (isActive) { - tablet.gotoHomeScreen(); - } - that.setActive(false); - that.clearEntityList(); - checkEditPermissionsAndUpdate(); - }); - - HMD.displayModeChanged.connect(function() { - if (isActive) { - tablet.gotoHomeScreen(); - } - that.setActive(false); - }); - - Entities.canAdjustLocksChanged.connect(function (canAdjustLocks) { - if (isActive && !canAdjustLocks) { - that.setActive(false); - } - checkEditPermissionsAndUpdate(); - }); - - Entities.canRezChanged.connect(checkEditPermissionsAndUpdate); - Entities.canRezTmpChanged.connect(checkEditPermissionsAndUpdate); - Entities.canRezCertifiedChanged.connect(checkEditPermissionsAndUpdate); - Entities.canRezTmpCertifiedChanged.connect(checkEditPermissionsAndUpdate); - var hasRezPermissions = (Entities.canRez() || Entities.canRezTmp() || Entities.canRezCertified() || Entities.canRezTmpCertified()); - - Entities.deletingEntity.connect(checkDeletedEntityAndUpdate); - - var createButtonIconRsrc = (hasRezPermissions ? CREATE_ENABLED_ICON : CREATE_DISABLED_ICON); - tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); - activeButton = tablet.addButton({ - captionColor: hasRezPermissions ? "#ffffff" : "#888888", - icon: createButtonIconRsrc, - activeIcon: "icons/tablet-icons/edit-a.svg", - text: "CREATE", - sortOrder: 10 - }); - createButton = activeButton; - tablet.screenChanged.connect(function (type, url) { - var isGoingToHomescreenOnDesktop = (!shouldUseEditTabletApp() && - (url === 'hifi/tablet/TabletHome.qml' || url === '')); - if (isActive && (type !== "QML" || url !== Script.resolvePath("qml/Edit.qml")) && !isGoingToHomescreenOnDesktop) { - that.setActive(false); - } - }); - tablet.fromQml.connect(fromQml); - createToolsWindow.fromQml.addListener(fromQml); - - createButton.clicked.connect(function() { - if ( ! (Entities.canRez() || Entities.canRezTmp() || Entities.canRezCertified() || Entities.canRezTmpCertified()) ) { - Window.notifyEditError(INSUFFICIENT_PERMISSIONS_ERROR_MSG); - return; - } - - that.toggle(); - }); - - addButton("importEntitiesButton", function() { - Window.browseChanged.connect(onFileOpenChanged); - Window.browseAsync("Select Model to Import", "", "*.json"); - }); - - addButton("openAssetBrowserButton", function() { - Window.showAssetServer(); - }); - function createNewEntityDialogButtonCallback(entityType) { - return function() { - if (shouldUseEditTabletApp()) { - // tablet version of new-model dialog - var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); - tablet.pushOntoStack(Script.resolvePath("qml/New" + entityType + "Dialog.qml")); - } else { - closeExistingDialogWindow(); - var qmlPath = Script.resolvePath("qml/New" + entityType + "Window.qml"); - var DIALOG_WINDOW_SIZE = { x: 500, y: 300 }; - dialogWindow = Desktop.createWindow(qmlPath, { - title: "New " + entityType + " Entity", - additionalFlags: Desktop.ALWAYS_ON_TOP | Desktop.CLOSE_BUTTON_HIDES, - presentationMode: Desktop.PresentationMode.NATIVE, - size: DIALOG_WINDOW_SIZE, - visible: true - }); - dialogWindow.fromQml.connect(fromQml); - } - }; - } - - addButton("newModelButton", createNewEntityDialogButtonCallback("Model")); - - addButton("newShapeButton", function () { - createNewEntity({ - type: "Shape", - shape: "Cube", - }); - }); - - addButton("newLightButton", function () { - createNewEntity({ - type: "Light", - }); - }); - - addButton("newTextButton", function () { - createNewEntity({ - type: "Text", - }); - }); - - addButton("newImageButton", function () { - createNewEntity({ - type: "Image", - }); - }); - - addButton("newWebButton", function () { - createNewEntity({ - type: "Web", - }); - }); - - addButton("newZoneButton", function () { - createNewEntity({ - type: "Zone", - }); - }); - - addButton("newParticleButton", function () { - createNewEntity({ - type: "ParticleEffect", - }); - }); - - addButton("newMaterialButton", createNewEntityDialogButtonCallback("Material")); - - var deactivateCreateIfDesktopWindowsHidden = function() { - if (!shouldUseEditTabletApp() && !entityListTool.isVisible() && !createToolsWindow.isVisible()) { - that.setActive(false); - } - }; - entityListTool.interactiveWindowHidden.addListener(this, deactivateCreateIfDesktopWindowsHidden); - createToolsWindow.interactiveWindowHidden.addListener(this, deactivateCreateIfDesktopWindowsHidden); - - that.setActive(false); - } - - that.clearEntityList = function () { - entityListTool.clearEntityList(); - }; - - that.toggle = function () { - that.setActive(!isActive); - if (!isActive) { - tablet.gotoHomeScreen(); - } - }; - - that.setActive = function (active) { - ContextOverlay.enabled = !active; - Settings.setValue(EDIT_SETTING, active); - if (active) { - Controller.captureEntityClickEvents(); - } else { - Controller.releaseEntityClickEvents(); - - closeExistingDialogWindow(); - } - if (active === isActive) { - return; - } - if (active && !Entities.canRez() && !Entities.canRezTmp() && !Entities.canRezCertified() && !Entities.canRezTmpCertified()) { - Window.notifyEditError(INSUFFICIENT_PERMISSIONS_ERROR_MSG); - return; - } - Messages.sendLocalMessage("edit-events", JSON.stringify({ - enabled: active - })); - isActive = active; - activeButton.editProperties({isActive: isActive}); - undoHistory.setEnabled(isActive); - - var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); - - if (!isActive) { - entityListTool.setVisible(false); - gridTool.setVisible(false); - grid.setEnabled(false); - propertiesTool.setVisible(false); - selectionManager.clearSelections(this); - cameraManager.disable(); - selectionDisplay.disableTriggerMapping(); - tablet.landscape = false; - Controller.disableMapping(CONTROLLER_MAPPING_NAME); - } else { - if (shouldUseEditTabletApp()) { - tablet.loadQMLSource(Script.resolvePath("qml/Edit.qml"), true); - } else { - // make other apps inactive while in desktop mode - tablet.gotoHomeScreen(); - } - UserActivityLogger.enabledEdit(); - entityListTool.setVisible(true); - entityListTool.sendUpdate(); - gridTool.setVisible(true); - grid.setEnabled(true); - propertiesTool.setVisible(true); - selectionDisplay.enableTriggerMapping(); - print("starting tablet in landscape mode"); - tablet.landscape = true; - Controller.enableMapping(CONTROLLER_MAPPING_NAME); - // 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(); - } - entityIconOverlayManager.setVisible(isActive && Menu.isOptionChecked(MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE)); - Entities.setDrawZoneBoundaries(isActive && Menu.isOptionChecked(MENU_SHOW_ZONES_IN_EDIT_MODE)); - }; - - initialize(); - return that; -})(); - -var selectedEntityID; -var orientation; -var intersection; - - -function rayPlaneIntersection(pickRay, point, normal) { // - // - // This version of the test returns the intersection of a line with a plane - // - var collides = Vec3.dot(pickRay.direction, normal); - - var d = -Vec3.dot(point, normal); - var t = -(Vec3.dot(pickRay.origin, normal) + d) / collides; - - return Vec3.sum(pickRay.origin, Vec3.multiply(pickRay.direction, t)); -} - -function rayPlaneIntersection2(pickRay, point, normal) { - // - // This version of the test returns false if the ray is directed away from the plane - // - var collides = Vec3.dot(pickRay.direction, normal); - var d = -Vec3.dot(point, normal); - var t = -(Vec3.dot(pickRay.origin, normal) + d) / collides; - if (t < 0.0) { - return false; - } else { - return Vec3.sum(pickRay.origin, Vec3.multiply(pickRay.direction, t)); - } -} - -function findClickedEntity(event) { - var pickZones = event.isControl; - - if (pickZones) { - Entities.setZonesArePickable(true); - } - - var pickRay = Camera.computePickRay(event.x, event.y); - var tabletIDs = getMainTabletIDs(); - if (tabletIDs.length > 0) { - var overlayResult = Overlays.findRayIntersection(pickRay, true, tabletIDs); - if (overlayResult.intersects) { - return null; - } - } - - var entityResult = Entities.findRayIntersection(pickRay, true); // want precision picking - var iconResult = entityIconOverlayManager.findRayIntersection(pickRay); - iconResult.accurate = true; - - if (pickZones) { - Entities.setZonesArePickable(false); - } - - var result; - - if (iconResult.intersects) { - result = iconResult; - } else if (entityResult.intersects) { - result = entityResult; - } else { - return null; - } - - if (!result.accurate) { - return null; - } - - var foundEntity = result.entityID; - return { - pickRay: pickRay, - entityID: foundEntity, - intersection: result.intersection - }; -} - -// Handles selections on overlays while in edit mode by querying entities from -// entityIconOverlayManager. -function handleOverlaySelectionToolUpdates(channel, message, sender) { - var wantDebug = false; - if (sender !== MyAvatar.sessionUUID || channel !== 'entityToolUpdates') - return; - - var data = JSON.parse(message); - - if (data.method === "selectOverlay") { - if (!selectionDisplay.triggered() || selectionDisplay.triggeredHand === data.hand) { - if (wantDebug) { - print("setting selection to overlay " + data.overlayID); - } - var entity = entityIconOverlayManager.findEntity(data.overlayID); - - if (entity !== null) { - selectionManager.setSelections([entity], this); - } - } - } -} - -function handleMessagesReceived(channel, message, sender) { - switch( channel ){ - case 'entityToolUpdates': { - handleOverlaySelectionToolUpdates( channel, message, sender ); - break; - } - default: { - return; - } - } -} - -Messages.subscribe("entityToolUpdates"); -Messages.messageReceived.connect(handleMessagesReceived); - -var mouseHasMovedSincePress = false; -var mousePressStartTime = 0; -var mousePressStartPosition = { - x: 0, - y: 0 -}; -var mouseDown = false; - -function mousePressEvent(event) { - mouseDown = true; - mousePressStartPosition = { - x: event.x, - y: event.y - }; - mousePressStartTime = Date.now(); - mouseHasMovedSincePress = false; - mouseCapturedByTool = false; - - if (propertyMenu.mousePressEvent(event) || progressDialog.mousePressEvent(event)) { - mouseCapturedByTool = true; - return; - } - if (isActive) { - if (cameraManager.mousePressEvent(event) || selectionDisplay.mousePressEvent(event)) { - // Event handled; do nothing. - return; - } - } -} - -var mouseCapturedByTool = false; -var lastMousePosition = null; -var CLICK_TIME_THRESHOLD = 500 * 1000; // 500 ms -var CLICK_MOVE_DISTANCE_THRESHOLD = 20; -var IDLE_MOUSE_TIMEOUT = 200; - -var lastMouseMoveEvent = null; - -function mouseMoveEventBuffered(event) { - lastMouseMoveEvent = event; -} - -function mouseMove(event) { - if (mouseDown && !mouseHasMovedSincePress) { - var timeSincePressMicro = Date.now() - mousePressStartTime; - - var dX = mousePressStartPosition.x - event.x; - var dY = mousePressStartPosition.y - event.y; - var sqDist = (dX * dX) + (dY * dY); - - // If less than CLICK_TIME_THRESHOLD has passed since the mouse click AND the mouse has moved - // less than CLICK_MOVE_DISTANCE_THRESHOLD distance, then don't register this as a mouse move - // yet. The goal is to provide mouse clicks that are more lenient to small movements. - if (timeSincePressMicro < CLICK_TIME_THRESHOLD && sqDist < CLICK_MOVE_DISTANCE_THRESHOLD) { - return; - } - mouseHasMovedSincePress = true; - } - - if (!isActive) { - return; - } - - // allow the selectionDisplay and cameraManager to handle the event first, if it doesn't handle it, then do our own thing - if (selectionDisplay.mouseMoveEvent(event) || propertyMenu.mouseMoveEvent(event) || cameraManager.mouseMoveEvent(event)) { - return; - } - - lastMousePosition = { - x: event.x, - y: event.y - }; -} - -function mouseReleaseEvent(event) { - mouseDown = false; - - if (lastMouseMoveEvent) { - mouseMove(lastMouseMoveEvent); - lastMouseMoveEvent = null; - } - if (propertyMenu.mouseReleaseEvent(event)) { - return true; - } - if (isActive && selectionManager.hasSelection()) { - tooltip.show(false); - } - if (mouseCapturedByTool) { - - return; - } - - cameraManager.mouseReleaseEvent(event); - - if (!mouseHasMovedSincePress) { - mouseClickEvent(event); - } -} - -function wasTabletOrEditHandleClicked(event) { - var rayPick = Camera.computePickRay(event.x, event.y); - var result = Overlays.findRayIntersection(rayPick, true); - if (result.intersects) { - var overlayID = result.overlayID; - var tabletIDs = getMainTabletIDs(); - if (tabletIDs.indexOf(overlayID) >= 0) { - return true; - } else if (selectionDisplay.isEditHandle(overlayID)) { - return true; - } - } - return false; -} - -function mouseClickEvent(event) { - var wantDebug = false; - var result, properties, tabletClicked; - if (isActive && event.isLeftButton) { - result = findClickedEntity(event); - var tabletOrEditHandleClicked = wasTabletOrEditHandleClicked(event); - if (tabletOrEditHandleClicked) { - return; - } - - if (result === null || result === undefined) { - if (!event.isShifted) { - selectionManager.clearSelections(this); - } - return; - } - toolBar.setActive(true); - var pickRay = result.pickRay; - var foundEntity = result.entityID; - if (HMD.tabletID && foundEntity === HMD.tabletID) { - return; - } - properties = Entities.getEntityProperties(foundEntity); - var halfDiagonal = Vec3.length(properties.dimensions) / 2.0; - - if (wantDebug) { - print("Checking properties: " + properties.id + " " + " - Half Diagonal:" + halfDiagonal); - } - // P P - Model - // /| A - Palm - // / | d B - unit vector toward tip - // / | X - base of the perpendicular line - // A---X----->B d - distance fom axis - // x x - distance from A - // - // |X-A| = (P-A).B - // X === A + ((P-A).B)B - // d = |P-X| - - var A = pickRay.origin; - var B = Vec3.normalize(pickRay.direction); - var P = properties.position; - - var x = Vec3.dot(Vec3.subtract(P, A), B); - - var angularSize = 2 * Math.atan(halfDiagonal / Vec3.distance(Camera.getPosition(), properties.position)) * - 180 / Math.PI; - - var sizeOK = (allowLargeModels || angularSize < MAX_ANGULAR_SIZE) && - (allowSmallModels || angularSize > MIN_ANGULAR_SIZE); - - if (0 < x && sizeOK) { - selectedEntityID = foundEntity; - orientation = MyAvatar.orientation; - intersection = rayPlaneIntersection(pickRay, P, Quat.getForward(orientation)); - - if (!event.isShifted) { - selectionManager.setSelections([foundEntity], this); - } else { - selectionManager.addEntity(foundEntity, true, this); - } - selectionManager.saveProperties(); - - if (wantDebug) { - print("Model selected: " + foundEntity); - } - selectionDisplay.select(selectedEntityID, event); - - if (Menu.isOptionChecked(MENU_AUTO_FOCUS_ON_SELECT)) { - cameraManager.enable(); - cameraManager.focus(selectionManager.worldPosition, - selectionManager.worldDimensions, - Menu.isOptionChecked(MENU_EASE_ON_FOCUS)); - } - } - } else if (event.isRightButton) { - result = findClickedEntity(event); - if (result) { - if (SHOULD_SHOW_PROPERTY_MENU !== true) { - return; - } - properties = Entities.getEntityProperties(result.entityID); - if (properties.marketplaceID) { - propertyMenu.marketplaceID = properties.marketplaceID; - propertyMenu.updateMenuItemText(showMenuItem, "Show in Marketplace"); - } else { - propertyMenu.marketplaceID = null; - propertyMenu.updateMenuItemText(showMenuItem, "No marketplace info"); - } - propertyMenu.setPosition(event.x, event.y); - propertyMenu.show(); - } else { - propertyMenu.hide(); - } - } -} - -Controller.mousePressEvent.connect(mousePressEvent); -Controller.mouseMoveEvent.connect(mouseMoveEventBuffered); -Controller.mouseReleaseEvent.connect(mouseReleaseEvent); - - -// In order for editVoxels and editModels to play nice together, they each check to see if a "delete" menu item already -// exists. If it doesn't they add it. If it does they don't. They also only delete the menu item if they were the one that -// added it. -var modelMenuAddedDelete = false; -var originalLightsArePickable = Entities.getLightsArePickable(); - -function setupModelMenus() { - // adj our menuitems - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: "Undo", - shortcutKey: 'Ctrl+Z', - position: 0, - }); - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: "Redo", - shortcutKey: 'Ctrl+Y', - position: 1, - }); - - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: "Entities", - isSeparator: true - }); - if (!Menu.menuItemExists("Edit", "Delete")) { - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: "Delete", - shortcutKeyEvent: { - text: "delete" - }, - afterItem: "Entities", - }); - modelMenuAddedDelete = true; - } - - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: "Parent Entity to Last", - afterItem: "Entities" - }); - - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: "Unparent Entity", - afterItem: "Parent Entity to Last" - }); - - Menu.addMenuItem({ - menuName: GRABBABLE_ENTITIES_MENU_CATEGORY, - menuItemName: MENU_CREATE_ENTITIES_GRABBABLE, - afterItem: "Unparent Entity", - isCheckable: true, - isChecked: Settings.getValue(SETTING_EDIT_PREFIX + MENU_CREATE_ENTITIES_GRABBABLE, true) - }); - - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: MENU_ALLOW_SELECTION_LARGE, - afterItem: MENU_CREATE_ENTITIES_GRABBABLE, - isCheckable: true, - isChecked: Settings.getValue(SETTING_EDIT_PREFIX + MENU_ALLOW_SELECTION_LARGE, true) - }); - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: MENU_ALLOW_SELECTION_SMALL, - afterItem: MENU_ALLOW_SELECTION_LARGE, - isCheckable: true, - isChecked: Settings.getValue(SETTING_EDIT_PREFIX + MENU_ALLOW_SELECTION_SMALL, true) - }); - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: MENU_ALLOW_SELECTION_LIGHTS, - afterItem: MENU_ALLOW_SELECTION_SMALL, - isCheckable: true, - isChecked: Settings.getValue(SETTING_EDIT_PREFIX + MENU_ALLOW_SELECTION_LIGHTS, false) - }); - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: "Select All Entities In Box", - afterItem: "Allow Selecting of Lights" - }); - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: "Select All Entities Touching Box", - afterItem: "Select All Entities In Box" - }); - - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: "Export Entities", - afterItem: "Entities" - }); - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: "Import Entities", - afterItem: "Export Entities" - }); - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: "Import Entities from URL", - afterItem: "Import Entities" - }); - - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: MENU_AUTO_FOCUS_ON_SELECT, - isCheckable: true, - isChecked: Settings.getValue(SETTING_AUTO_FOCUS_ON_SELECT) === "true" - }); - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: MENU_EASE_ON_FOCUS, - afterItem: MENU_AUTO_FOCUS_ON_SELECT, - isCheckable: true, - isChecked: Settings.getValue(SETTING_EASE_ON_FOCUS) === "true" - }); - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE, - afterItem: MENU_EASE_ON_FOCUS, - isCheckable: true, - isChecked: Settings.getValue(SETTING_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE) !== "false" - }); - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: MENU_SHOW_ZONES_IN_EDIT_MODE, - afterItem: MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE, - isCheckable: true, - isChecked: Settings.getValue(SETTING_SHOW_ZONES_IN_EDIT_MODE) !== "false" - }); - - Entities.setLightsArePickable(false); -} - -setupModelMenus(); // do this when first running our script. - -function cleanupModelMenus() { - Menu.removeMenuItem("Edit", "Undo"); - Menu.removeMenuItem("Edit", "Redo"); - - Menu.removeSeparator("Edit", "Entities"); - if (modelMenuAddedDelete) { - // delete our menuitems - Menu.removeMenuItem("Edit", "Delete"); - } - - Menu.removeMenuItem("Edit", "Parent Entity to Last"); - Menu.removeMenuItem("Edit", "Unparent Entity"); - Menu.removeMenuItem("Edit", "Allow Selecting of Large Models"); - Menu.removeMenuItem("Edit", "Allow Selecting of Small Models"); - Menu.removeMenuItem("Edit", "Allow Selecting of Lights"); - Menu.removeMenuItem("Edit", "Select All Entities In Box"); - Menu.removeMenuItem("Edit", "Select All Entities Touching Box"); - - Menu.removeMenuItem("Edit", "Export Entities"); - Menu.removeMenuItem("Edit", "Import Entities"); - Menu.removeMenuItem("Edit", "Import Entities from URL"); - - Menu.removeMenuItem("Edit", MENU_AUTO_FOCUS_ON_SELECT); - Menu.removeMenuItem("Edit", MENU_EASE_ON_FOCUS); - Menu.removeMenuItem("Edit", MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE); - Menu.removeMenuItem("Edit", MENU_SHOW_ZONES_IN_EDIT_MODE); - Menu.removeMenuItem("Edit", MENU_CREATE_ENTITIES_GRABBABLE); -} - -Script.scriptEnding.connect(function () { - toolBar.setActive(false); - Settings.setValue(SETTING_AUTO_FOCUS_ON_SELECT, Menu.isOptionChecked(MENU_AUTO_FOCUS_ON_SELECT)); - Settings.setValue(SETTING_EASE_ON_FOCUS, Menu.isOptionChecked(MENU_EASE_ON_FOCUS)); - Settings.setValue(SETTING_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE, Menu.isOptionChecked(MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE)); - Settings.setValue(SETTING_SHOW_ZONES_IN_EDIT_MODE, Menu.isOptionChecked(MENU_SHOW_ZONES_IN_EDIT_MODE)); - - Settings.setValue(SETTING_EDIT_PREFIX + MENU_ALLOW_SELECTION_LARGE, Menu.isOptionChecked(MENU_ALLOW_SELECTION_LARGE)); - Settings.setValue(SETTING_EDIT_PREFIX + MENU_ALLOW_SELECTION_SMALL, Menu.isOptionChecked(MENU_ALLOW_SELECTION_SMALL)); - Settings.setValue(SETTING_EDIT_PREFIX + MENU_ALLOW_SELECTION_LIGHTS, Menu.isOptionChecked(MENU_ALLOW_SELECTION_LIGHTS)); - - - progressDialog.cleanup(); - cleanupModelMenus(); - tooltip.cleanup(); - selectionDisplay.cleanup(); - entityShapeVisualizer.cleanup(); - Entities.setLightsArePickable(originalLightsArePickable); - - Overlays.deleteOverlay(importingSVOImageOverlay); - Overlays.deleteOverlay(importingSVOTextOverlay); - - Controller.keyReleaseEvent.disconnect(keyReleaseEvent); - Controller.keyPressEvent.disconnect(keyPressEvent); - - Controller.mousePressEvent.disconnect(mousePressEvent); - Controller.mouseMoveEvent.disconnect(mouseMoveEventBuffered); - Controller.mouseReleaseEvent.disconnect(mouseReleaseEvent); - - Messages.messageReceived.disconnect(handleMessagesReceived); - Messages.unsubscribe("entityToolUpdates"); - createButton = null; -}); - -var lastOrientation = null; -var lastPosition = null; - -// Do some stuff regularly, like check for placement of various overlays -Script.update.connect(function (deltaTime) { - progressDialog.move(); - selectionDisplay.checkControllerMove(); - var dOrientation = Math.abs(Quat.dot(Camera.orientation, lastOrientation) - 1); - var dPosition = Vec3.distance(Camera.position, lastPosition); - if (dOrientation > 0.001 || dPosition > 0.001) { - propertyMenu.hide(); - lastOrientation = Camera.orientation; - lastPosition = Camera.position; - } - if (lastMouseMoveEvent) { - mouseMove(lastMouseMoveEvent); - lastMouseMoveEvent = null; - } -}); - -function insideBox(center, dimensions, point) { - return (Math.abs(point.x - center.x) <= (dimensions.x / 2.0)) && - (Math.abs(point.y - center.y) <= (dimensions.y / 2.0)) && - (Math.abs(point.z - center.z) <= (dimensions.z / 2.0)); -} - -function selectAllEntitiesInCurrentSelectionBox(keepIfTouching) { - if (selectionManager.hasSelection()) { - // Get all entities touching the bounding box of the current selection - var boundingBoxCorner = Vec3.subtract(selectionManager.worldPosition, - Vec3.multiply(selectionManager.worldDimensions, 0.5)); - var entities = Entities.findEntitiesInBox(boundingBoxCorner, selectionManager.worldDimensions); - - if (!keepIfTouching) { - var isValid; - if (selectionManager.localPosition === null || selectionManager.localPosition === undefined) { - isValid = function (position) { - return insideBox(selectionManager.worldPosition, selectionManager.worldDimensions, position); - }; - } else { - isValid = function (position) { - var localPosition = Vec3.multiplyQbyV(Quat.inverse(selectionManager.localRotation), - Vec3.subtract(position, - selectionManager.localPosition)); - return insideBox(Vec3.ZERO, selectionManager.localDimensions, localPosition); - }; - } - for (var i = 0; i < entities.length; ++i) { - var properties = Entities.getEntityProperties(entities[i]); - if (!isValid(properties.position)) { - entities.splice(i, 1); - --i; - } - } - } - selectionManager.setSelections(entities, this); - } -} - -function sortSelectedEntities(selected) { - var sortedEntities = selected.slice(); - var begin = 0; - while (begin < sortedEntities.length) { - var elementRemoved = false; - var next = begin + 1; - while (next < sortedEntities.length) { - var beginID = sortedEntities[begin]; - var nextID = sortedEntities[next]; - - if (Entities.isChildOfParent(beginID, nextID)) { - sortedEntities[begin] = nextID; - sortedEntities[next] = beginID; - sortedEntities.splice(next, 1); - elementRemoved = true; - break; - } else if (Entities.isChildOfParent(nextID, beginID)) { - sortedEntities.splice(next, 1); - elementRemoved = true; - break; - } - next++; - } - if (!elementRemoved) { - begin++; - } - } - return sortedEntities; -} - -function recursiveDelete(entities, childrenList, deletedIDs, entityHostType) { - var wantDebug = false; - var entitiesLength = entities.length; - var initialPropertySets = Entities.getMultipleEntityProperties(entities); - var entityHostTypes = Entities.getMultipleEntityProperties(entities, 'entityHostType'); - for (var i = 0; i < entitiesLength; ++i) { - var entityID = entities[i]; - - if (entityHostTypes[i].entityHostType !== entityHostType) { - if (wantDebug) { - console.log("Skipping deletion of entity " + entityID + " with conflicting entityHostType: " + - entityHostTypes[i].entityHostType + ", expected: " + entityHostType); - } - continue; - } - - var children = Entities.getChildrenIDs(entityID); - var grandchildrenList = []; - recursiveDelete(children, grandchildrenList, deletedIDs, entityHostType); - childrenList.push({ - entityID: entityID, - properties: initialPropertySets[i], - children: grandchildrenList - }); - deletedIDs.push(entityID); - Entities.deleteEntity(entityID); - } -} - -function unparentSelectedEntities() { - if (SelectionManager.hasSelection()) { - var selectedEntities = selectionManager.selections; - var parentCheck = false; - - if (selectedEntities.length < 1) { - Window.notifyEditError("You must have an entity selected in order to unparent it."); - return; - } - selectedEntities.forEach(function (id, index) { - var parentId = Entities.getEntityProperties(id, ["parentID"]).parentID; - if (parentId !== null && parentId.length > 0 && parentId !== Uuid.NULL) { - parentCheck = true; - } - Entities.editEntity(id, {parentID: null}); - return true; - }); - if (parentCheck) { - if (selectedEntities.length > 1) { - Window.notify("Entities unparented"); - } else { - Window.notify("Entity unparented"); - } - } else { - if (selectedEntities.length > 1) { - Window.notify("Selected Entities have no parents"); - } else { - Window.notify("Selected Entity does not have a parent"); - } - } - } else { - Window.notifyEditError("You have nothing selected to unparent"); - } -} -function parentSelectedEntities() { - if (SelectionManager.hasSelection()) { - var selectedEntities = selectionManager.selections; - if (selectedEntities.length <= 1) { - Window.notifyEditError("You must have multiple entities selected in order to parent them"); - return; - } - var parentCheck = false; - var lastEntityId = selectedEntities[selectedEntities.length - 1]; - selectedEntities.forEach(function (id, index) { - if (lastEntityId !== id) { - var parentId = Entities.getEntityProperties(id, ["parentID"]).parentID; - if (parentId !== lastEntityId) { - parentCheck = true; - } - Entities.editEntity(id, {parentID: lastEntityId}); - } - }); - - if (parentCheck) { - Window.notify("Entities parented"); - } else { - Window.notify("Entities are already parented to last"); - } - } else { - Window.notifyEditError("You have nothing selected to parent"); - } -} -function deleteSelectedEntities() { - if (SelectionManager.hasSelection()) { - var deletedIDs = []; - - SelectionManager.saveProperties(); - var savedProperties = []; - var newSortedSelection = sortSelectedEntities(selectionManager.selections); - var entityHostTypes = Entities.getMultipleEntityProperties(newSortedSelection, 'entityHostType'); - for (var i = 0; i < newSortedSelection.length; ++i) { - var entityID = newSortedSelection[i]; - var initialProperties = SelectionManager.savedProperties[entityID]; - if (initialProperties.locked || - (initialProperties.avatarEntity && initialProperties.owningAvatarID !== MyAvatar.sessionUUID)) { - continue; - } - var children = Entities.getChildrenIDs(entityID); - var childList = []; - recursiveDelete(children, childList, deletedIDs, entityHostTypes[i].entityHostType); - savedProperties.push({ - entityID: entityID, - properties: initialProperties, - children: childList - }); - deletedIDs.push(entityID); - Entities.deleteEntity(entityID); - } - - if (savedProperties.length > 0) { - SelectionManager.clearSelections(this); - pushCommandForSelections([], savedProperties); - entityListTool.deleteEntities(deletedIDs); - } - } -} - -function toggleSelectedEntitiesLocked() { - if (SelectionManager.hasSelection()) { - var locked = !Entities.getEntityProperties(SelectionManager.selections[0], ["locked"]).locked; - for (var i = 0; i < selectionManager.selections.length; i++) { - var entityID = SelectionManager.selections[i]; - Entities.editEntity(entityID, { - locked: locked - }); - } - entityListTool.sendUpdate(); - selectionManager._update(false, this); - } -} - -function toggleSelectedEntitiesVisible() { - if (SelectionManager.hasSelection()) { - var visible = !Entities.getEntityProperties(SelectionManager.selections[0], ["visible"]).visible; - for (var i = 0; i < selectionManager.selections.length; i++) { - var entityID = SelectionManager.selections[i]; - Entities.editEntity(entityID, { - visible: visible - }); - } - entityListTool.sendUpdate(); - selectionManager._update(false, this); - } -} - -function onFileSaveChanged(filename) { - Window.saveFileChanged.disconnect(onFileSaveChanged); - if (filename !== "") { - var success = Clipboard.exportEntities(filename, selectionManager.selections); - if (!success) { - Window.notifyEditError("Export failed."); - } - } -} - -function onFileOpenChanged(filename) { - // disconnect the event, otherwise the requests will stack up - try { - // Not all calls to onFileOpenChanged() connect an event. - Window.browseChanged.disconnect(onFileOpenChanged); - } catch (e) { - // Ignore. - } - - var importURL = null; - if (filename !== "") { - importURL = filename; - if (!/^(http|https):\/\//.test(filename)) { - importURL = "file:///" + importURL; - } - } - if (importURL) { - if (!isActive && (Entities.canRez() && Entities.canRezTmp() && Entities.canRezCertified() && Entities.canRezTmpCertified())) { - toolBar.toggle(); - } - importSVO(importURL); - } -} - -function onPromptTextChanged(prompt) { - Window.promptTextChanged.disconnect(onPromptTextChanged); - if (prompt !== "") { - if (!isActive && (Entities.canRez() && Entities.canRezTmp() && Entities.canRezCertified() && Entities.canRezTmpCertified())) { - toolBar.toggle(); - } - importSVO(prompt); - } -} - -function handleMenuEvent(menuItem) { - if (menuItem === "Allow Selecting of Small Models") { - allowSmallModels = Menu.isOptionChecked("Allow Selecting of Small Models"); - } else if (menuItem === "Allow Selecting of Large Models") { - allowLargeModels = Menu.isOptionChecked("Allow Selecting of Large Models"); - } else if (menuItem === "Allow Selecting of Lights") { - Entities.setLightsArePickable(Menu.isOptionChecked("Allow Selecting of Lights")); - } else if (menuItem === "Delete") { - deleteSelectedEntities(); - } else if (menuItem === "Undo") { - undoHistory.undo(); - } else if (menuItem === "Redo") { - undoHistory.redo(); - } else if (menuItem === "Parent Entity to Last") { - parentSelectedEntities(); - } else if (menuItem === "Unparent Entity") { - unparentSelectedEntities(); - } else if (menuItem === "Export Entities") { - if (!selectionManager.hasSelection()) { - Window.notifyEditError("No entities have been selected."); - } else { - Window.saveFileChanged.connect(onFileSaveChanged); - Window.saveAsync("Select Where to Save", "", "*.json"); - } - } else if (menuItem === "Import Entities" || menuItem === "Import Entities from URL") { - if (menuItem === "Import Entities") { - Window.browseChanged.connect(onFileOpenChanged); - Window.browseAsync("Select Model to Import", "", "*.json"); - } else { - Window.promptTextChanged.connect(onPromptTextChanged); - Window.promptAsync("URL of SVO to import", ""); - } - } else if (menuItem === "Select All Entities In Box") { - selectAllEntitiesInCurrentSelectionBox(false); - } else if (menuItem === "Select All Entities Touching Box") { - selectAllEntitiesInCurrentSelectionBox(true); - } else if (menuItem === MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE) { - entityIconOverlayManager.setVisible(isActive && Menu.isOptionChecked(MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE)); - } else if (menuItem === MENU_SHOW_ZONES_IN_EDIT_MODE) { - Entities.setDrawZoneBoundaries(isActive && Menu.isOptionChecked(MENU_SHOW_ZONES_IN_EDIT_MODE)); - } else if (menuItem === MENU_CREATE_ENTITIES_GRABBABLE) { - Settings.setValue(SETTING_EDIT_PREFIX + menuItem, Menu.isOptionChecked(menuItem)); - } - tooltip.show(false); -} - -var HALF_TREE_SCALE = 16384; - -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 + delta)); - } else { - position = Vec3.sum(MyAvatar.position, Vec3.multiply(Quat.getForward(MyAvatar.orientation), CREATE_DISTANCE + delta)); - } - - if (position.x > HALF_TREE_SCALE || position.y > HALF_TREE_SCALE || position.z > HALF_TREE_SCALE) { - return null; - } - return position; -} - -function importSVO(importURL) { - if (!Entities.canRez() && !Entities.canRezTmp() && - !Entities.canRezCertified() && !Entities.canRezTmpCertified()) { - Window.notifyEditError(INSUFFICIENT_PERMISSIONS_IMPORT_ERROR_MSG); - return; - } - - Overlays.editOverlay(importingSVOTextOverlay, { - visible: true - }); - Overlays.editOverlay(importingSVOImageOverlay, { - visible: true - }); - - var success = Clipboard.importEntities(importURL); - - if (success) { - var VERY_LARGE = 10000; - var isLargeImport = Clipboard.getClipboardContentsLargestDimension() >= VERY_LARGE; - var position = Vec3.ZERO; - if (!isLargeImport) { - position = getPositionToCreateEntity(Clipboard.getClipboardContentsLargestDimension() / 2); - } - 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 deltaPosition = Vec3.ZERO; - var entityPositions = []; - var entityParentIDs = []; - - var propType = Entities.getEntityProperties(pastedEntityIDs[0], ["type"]).type; - var NO_ADJUST_ENTITY_TYPES = ["Zone", "Light", "ParticleEffect"]; - if (NO_ADJUST_ENTITY_TYPES.indexOf(propType) === -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. - for (var i = 0, length = pastedEntityIDs.length; i < length; i++) { - var curLoopEntityProps = Entities.getEntityProperties(pastedEntityIDs[i], ["position", "dimensions", - "registrationPoint", "rotation", "parentID"]); - var adjustedPosition = adjustPositionPerBoundingBox(targetPosition, targetDirection, - curLoopEntityProps.registrationPoint, curLoopEntityProps.dimensions, curLoopEntityProps.rotation); - var delta = Vec3.subtract(adjustedPosition, curLoopEntityProps.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] = curLoopEntityProps.position; - entityParentIDs[i] = curLoopEntityProps.parentID; - } - deltaPerpendicular = Vec3.multiply(1 / pastedEntityIDs.length, deltaPerpendicular); - deltaPosition = Vec3.sum(Vec3.multiply(deltaParallel, targetDirection), deltaPerpendicular); - } - - if (grid.getSnapToGrid()) { - var firstEntityProps = Entities.getEntityProperties(pastedEntityIDs[0], ["position", "dimensions", - "registrationPoint"]); - var positionPreSnap = Vec3.sum(deltaPosition, firstEntityProps.position); - position = grid.snapToSurface(grid.snapToGrid(positionPreSnap, false, firstEntityProps.dimensions, - firstEntityProps.registrationPoint), firstEntityProps.dimensions, firstEntityProps.registrationPoint); - deltaPosition = Vec3.subtract(position, firstEntityProps.position); - } - - if (!Vec3.equal(deltaPosition, Vec3.ZERO)) { - for (var editEntityIndex = 0, numEntities = pastedEntityIDs.length; editEntityIndex < numEntities; editEntityIndex++) { - if (Uuid.isNull(entityParentIDs[editEntityIndex])) { - Entities.editEntity(pastedEntityIDs[editEntityIndex], { - position: Vec3.sum(deltaPosition, entityPositions[editEntityIndex]) - }); - } - } - } - } - - if (isActive) { - selectionManager.setSelections(pastedEntityIDs, this); - } - } else { - Window.notifyEditError("Can't import entities: entities would be out of bounds."); - } - } else { - Window.notifyEditError("There was an error importing the entity file."); - } - - Overlays.editOverlay(importingSVOTextOverlay, { - visible: false - }); - Overlays.editOverlay(importingSVOImageOverlay, { - visible: false - }); -} -Window.svoImportRequested.connect(importSVO); - -Menu.menuItemEvent.connect(handleMenuEvent); - -var keyPressEvent = function (event) { - if (isActive) { - cameraManager.keyPressEvent(event); - } -}; -var keyReleaseEvent = function (event) { - if (isActive) { - cameraManager.keyReleaseEvent(event); - } -}; -Controller.keyReleaseEvent.connect(keyReleaseEvent); -Controller.keyPressEvent.connect(keyPressEvent); - -function deleteKey(value) { - if (value === 0) { // on release - deleteSelectedEntities(); - } -} -function deselectKey(value) { - if (value === 0) { // on release - selectionManager.clearSelections(this); - } -} -function toggleKey(value) { - if (value === 0) { // on release - selectionDisplay.toggleSpaceMode(); - } -} -function focusKey(value) { - if (value === 0) { // on release - cameraManager.enable(); - if (selectionManager.hasSelection()) { - cameraManager.focus(selectionManager.worldPosition, selectionManager.worldDimensions, - Menu.isOptionChecked(MENU_EASE_ON_FOCUS)); - } - } -} -function gridKey(value) { - if (value === 0) { // on release - if (selectionManager.hasSelection()) { - grid.moveToSelection(); - } - } -} -function recursiveAdd(newParentID, parentData) { - if (parentData.children !== undefined) { - var children = parentData.children; - for (var i = 0; i < children.length; i++) { - var childProperties = children[i].properties; - childProperties.parentID = newParentID; - var newChildID = Entities.addEntity(childProperties); - recursiveAdd(newChildID, children[i]); - } - } -} - -var UndoHistory = function(onUpdate) { - this.history = []; - // The current position is the index of the last executed action in the history array. - // - // -1 0 1 2 3 <- position - // A B C D <- actions in history - // - // If our lastExecutedIndex is 1, the last executed action is B. - // If we undo, we undo B (index 1). If we redo, we redo C (index 2). - this.lastExecutedIndex = -1; - this.enabled = true; - this.onUpdate = onUpdate; -}; - -UndoHistory.prototype.pushCommand = function(undoFn, undoArgs, redoFn, redoArgs) { - if (!this.enabled) { - return; - } - // Delete any history following the last executed action. - this.history.splice(this.lastExecutedIndex + 1); - this.history.push({ - undoFn: undoFn, - undoArgs: undoArgs, - redoFn: redoFn, - redoArgs: redoArgs - }); - this.lastExecutedIndex++; - - if (this.onUpdate) { - this.onUpdate(); - } -}; -UndoHistory.prototype.setEnabled = function(enabled) { - this.enabled = enabled; - if (this.onUpdate) { - this.onUpdate(); - } -}; -UndoHistory.prototype.canUndo = function() { - return this.enabled && this.lastExecutedIndex >= 0; -}; -UndoHistory.prototype.canRedo = function() { - return this.enabled && this.lastExecutedIndex < this.history.length - 1; -}; -UndoHistory.prototype.undo = function() { - if (!this.canUndo()) { - console.warn("Cannot undo action"); - return; - } - - var command = this.history[this.lastExecutedIndex]; - command.undoFn(command.undoArgs); - this.lastExecutedIndex--; - - if (this.onUpdate) { - this.onUpdate(); - } -}; -UndoHistory.prototype.redo = function() { - if (!this.canRedo()) { - console.warn("Cannot redo action"); - return; - } - - var command = this.history[this.lastExecutedIndex + 1]; - command.redoFn(command.redoArgs); - this.lastExecutedIndex++; - - if (this.onUpdate) { - this.onUpdate(); - } -}; - -function updateUndoRedoMenuItems() { - Menu.setMenuEnabled("Edit > Undo", undoHistory.canUndo()); - Menu.setMenuEnabled("Edit > Redo", undoHistory.canRedo()); -} -var undoHistory = new UndoHistory(updateUndoRedoMenuItems); -updateUndoRedoMenuItems(); - -// When an entity has been deleted we need a way to "undo" this deletion. Because it's not currently -// possible to create an entity with a specific id, earlier undo commands to the deleted entity -// will fail if there isn't a way to find the new entity id. -var DELETED_ENTITY_MAP = {}; - -function applyEntityProperties(data) { - var editEntities = data.editEntities; - var createEntities = data.createEntities; - var deleteEntities = data.deleteEntities; - var selectedEntityIDs = []; - var selectEdits = createEntities.length === 0 || !data.selectCreated; - var i, entityID, entityProperties; - for (i = 0; i < createEntities.length; i++) { - entityID = createEntities[i].entityID; - entityProperties = createEntities[i].properties; - var newEntityID = Entities.addEntity(entityProperties); - recursiveAdd(newEntityID, createEntities[i]); - DELETED_ENTITY_MAP[entityID] = newEntityID; - if (data.selectCreated) { - selectedEntityIDs.push(newEntityID); - } - } - for (i = 0; i < deleteEntities.length; i++) { - entityID = deleteEntities[i].entityID; - if (DELETED_ENTITY_MAP[entityID] !== undefined) { - entityID = DELETED_ENTITY_MAP[entityID]; - } - Entities.deleteEntity(entityID); - var index = selectedEntityIDs.indexOf(entityID); - if (index >= 0) { - selectedEntityIDs.splice(index, 1); - } - } - for (i = 0; i < editEntities.length; i++) { - entityID = editEntities[i].entityID; - if (DELETED_ENTITY_MAP[entityID] !== undefined) { - entityID = DELETED_ENTITY_MAP[entityID]; - } - entityProperties = editEntities[i].properties; - if (entityProperties !== null) { - Entities.editEntity(entityID, entityProperties); - } - if (selectEdits) { - selectedEntityIDs.push(entityID); - } - } - - // We might be getting an undo while edit.js is disabled. If that is the case, don't set - // our selections, causing the edit widgets to display. - if (isActive) { - selectionManager.setSelections(selectedEntityIDs, this); - selectionManager.saveProperties(); - } -} - -// For currently selected entities, push a command to the UndoStack that uses the current entity properties for the -// redo command, and the saved properties for the undo command. Also, include create and delete entity data. -function pushCommandForSelections(createdEntityData, deletedEntityData, doNotSaveEditProperties) { - doNotSaveEditProperties = false; - var undoData = { - editEntities: [], - createEntities: deletedEntityData || [], - deleteEntities: createdEntityData || [], - selectCreated: true - }; - var redoData = { - editEntities: [], - createEntities: createdEntityData || [], - deleteEntities: deletedEntityData || [], - selectCreated: true - }; - for (var i = 0; i < SelectionManager.selections.length; i++) { - var entityID = SelectionManager.selections[i]; - var initialProperties = SelectionManager.savedProperties[entityID]; - var currentProperties = null; - if (!initialProperties) { - continue; - } - - if (doNotSaveEditProperties) { - initialProperties = null; - } else { - currentProperties = Entities.getEntityProperties(entityID); - } - - undoData.editEntities.push({ - entityID: entityID, - properties: initialProperties - }); - redoData.editEntities.push({ - entityID: entityID, - properties: currentProperties - }); - } - undoHistory.pushCommand(applyEntityProperties, undoData, applyEntityProperties, redoData); -} - -var ServerScriptStatusMonitor = function(entityID, statusCallback) { - var self = this; - - self.entityID = entityID; - self.active = true; - self.sendRequestTimerID = null; - - var onStatusReceived = function(success, isRunning, status, errorInfo) { - if (self.active) { - statusCallback({ - statusRetrieved: success, - isRunning: isRunning, - status: status, - errorInfo: errorInfo - }); - self.sendRequestTimerID = Script.setTimeout(function() { - if (self.active) { - Entities.getServerScriptStatus(entityID, onStatusReceived); - } - }, 1000); - } - }; - self.stop = function() { - self.active = false; - }; - - Entities.getServerScriptStatus(entityID, onStatusReceived); -}; - -var PropertiesTool = function (opts) { - var that = {}; - - var webView = null; - webView = Tablet.getTablet("com.highfidelity.interface.tablet.system"); - webView.setVisible = function(value) {}; - - var visible = false; - - // This keeps track of the last entity ID that was selected. If multiple entities - // are selected or if no entity is selected this will be `null`. - var currentSelectedEntityID = null; - var statusMonitor = null; - var blockPropertyUpdates = false; - - that.setVisible = function (newVisible) { - visible = newVisible; - webView.setVisible(shouldUseEditTabletApp() && visible); - createToolsWindow.setVisible(!shouldUseEditTabletApp() && visible); - }; - - that.setVisible(false); - - function emitScriptEvent(data) { - var dataString = JSON.stringify(data); - webView.emitScriptEvent(dataString); - createToolsWindow.emitScriptEvent(dataString); - } - - function updateScriptStatus(info) { - info.type = "server_script_status"; - emitScriptEvent(info); - } - - function resetScriptStatus() { - updateScriptStatus({ - statusRetrieved: undefined, - isRunning: undefined, - status: "", - errorInfo: "" - }); - } - - that.setSpaceMode = function(spaceMode) { - emitScriptEvent({ - type: 'setSpaceMode', - spaceMode: spaceMode - }) - }; - - function updateSelections(selectionUpdated, caller) { - if (blockPropertyUpdates) { - return; - } - - var data = { - type: 'update', - spaceMode: selectionDisplay.getSpaceMode(), - isPropertiesToolUpdate: caller === this, - }; - - if (selectionUpdated) { - resetScriptStatus(); - - if (selectionManager.selections.length !== 1) { - if (statusMonitor !== null) { - statusMonitor.stop(); - statusMonitor = null; - } - currentSelectedEntityID = null; - } else if (currentSelectedEntityID !== selectionManager.selections[0]) { - if (statusMonitor !== null) { - statusMonitor.stop(); - } - var entityID = selectionManager.selections[0]; - currentSelectedEntityID = entityID; - statusMonitor = new ServerScriptStatusMonitor(entityID, updateScriptStatus); - } - } - - var selections = []; - for (var i = 0; i < selectionManager.selections.length; i++) { - var entity = {}; - entity.id = selectionManager.selections[i]; - entity.properties = Entities.getEntityProperties(selectionManager.selections[i]); - if (entity.properties.rotation !== undefined) { - entity.properties.rotation = Quat.safeEulerAngles(entity.properties.rotation); - } - if (entity.properties.localRotation !== undefined) { - entity.properties.localRotation = Quat.safeEulerAngles(entity.properties.localRotation); - } - if (entity.properties.emitOrientation !== undefined) { - entity.properties.emitOrientation = Quat.safeEulerAngles(entity.properties.emitOrientation); - } - if (entity.properties.keyLight !== undefined && entity.properties.keyLight.direction !== undefined) { - entity.properties.keyLight.direction = Vec3.toPolar(entity.properties.keyLight.direction); - entity.properties.keyLight.direction.z = 0.0; - } - selections.push(entity); - } - data.selections = selections; - - emitScriptEvent(data); - } - selectionManager.addEventListener(updateSelections, this); - - - var onWebEventReceived = function(data) { - try { - data = JSON.parse(data); - } catch(e) { - return; - } - var i, properties, dY, diff, newPosition; - if (data.type === "update") { - - if (data.properties || data.propertiesMap) { - var propertiesMap = data.propertiesMap; - if (propertiesMap === undefined) { - propertiesMap = [{ - entityIDs: data.ids, - properties: data.properties, - }]; - } - - var sendListUpdate = false; - propertiesMap.forEach(function(propertiesObject) { - var properties = propertiesObject.properties; - var updateEntityIDs = propertiesObject.entityIDs; - if (properties.dynamic === false) { - // this object is leaving dynamic, so we zero its velocities - properties.localVelocity = Vec3.ZERO; - properties.localAngularVelocity = Vec3.ZERO; - } - if (properties.rotation !== undefined) { - properties.rotation = Quat.fromVec3Degrees(properties.rotation); - } - if (properties.localRotation !== undefined) { - properties.localRotation = Quat.fromVec3Degrees(properties.localRotation); - } - if (properties.emitOrientation !== undefined) { - properties.emitOrientation = Quat.fromVec3Degrees(properties.emitOrientation); - } - if (properties.keyLight !== undefined && properties.keyLight.direction !== undefined) { - var currentKeyLightDirection = Vec3.toPolar(Entities.getEntityProperties(selectionManager.selections[0], ['keyLight.direction']).keyLight.direction); - if (properties.keyLight.direction.x === undefined) { - properties.keyLight.direction.x = currentKeyLightDirection.x; - } - if (properties.keyLight.direction.y === undefined) { - properties.keyLight.direction.y = currentKeyLightDirection.y; - } - properties.keyLight.direction = Vec3.fromPolar(properties.keyLight.direction.x, properties.keyLight.direction.y); - } - - updateEntityIDs.forEach(function (entityID) { - Entities.editEntity(entityID, properties); - }); - - if (properties.name !== undefined || properties.modelURL !== undefined || properties.materialURL !== undefined || - properties.visible !== undefined || properties.locked !== undefined) { - - sendListUpdate = true; - } - - }); - if (sendListUpdate) { - entityListTool.sendUpdate(); - } - } - - - if (data.onlyUpdateEntities) { - blockPropertyUpdates = true; - } else { - pushCommandForSelections(); - SelectionManager.saveProperties(); - } - selectionManager._update(false, this); - blockPropertyUpdates = false; - } else if (data.type === 'saveUserData' || data.type === 'saveMaterialData') { - data.ids.forEach(function(entityID) { - Entities.editEntity(entityID, data.properties); - }); - } else if (data.type === "showMarketplace") { - showMarketplace(); - } else if (data.type === "action") { - if (data.action === "moveSelectionToGrid") { - if (selectionManager.hasSelection()) { - selectionManager.saveProperties(); - dY = grid.getOrigin().y - (selectionManager.worldPosition.y - selectionManager.worldDimensions.y / 2); - diff = { - x: 0, - y: dY, - z: 0 - }; - for (i = 0; i < selectionManager.selections.length; i++) { - properties = selectionManager.savedProperties[selectionManager.selections[i]]; - newPosition = Vec3.sum(properties.position, diff); - Entities.editEntity(selectionManager.selections[i], { - position: newPosition - }); - } - pushCommandForSelections(); - selectionManager._update(false, this); - } - } else if (data.action === "moveAllToGrid") { - if (selectionManager.hasSelection()) { - selectionManager.saveProperties(); - for (i = 0; i < selectionManager.selections.length; i++) { - properties = selectionManager.savedProperties[selectionManager.selections[i]]; - var bottomY = properties.boundingBox.center.y - properties.boundingBox.dimensions.y / 2; - dY = grid.getOrigin().y - bottomY; - diff = { - x: 0, - y: dY, - z: 0 - }; - newPosition = Vec3.sum(properties.position, diff); - Entities.editEntity(selectionManager.selections[i], { - position: newPosition - }); - } - pushCommandForSelections(); - selectionManager._update(false, this); - } - } else if (data.action === "resetToNaturalDimensions") { - if (selectionManager.hasSelection()) { - selectionManager.saveProperties(); - for (i = 0; i < selectionManager.selections.length; i++) { - properties = selectionManager.savedProperties[selectionManager.selections[i]]; - var naturalDimensions = properties.naturalDimensions; - - // If any of the natural dimensions are not 0, resize - if (properties.type === "Model" && naturalDimensions.x === 0 && naturalDimensions.y === 0 && - naturalDimensions.z === 0) { - Window.notifyEditError("Cannot reset entity to its natural dimensions: Model URL" + - " is invalid or the model has not yet been loaded."); - } else { - Entities.editEntity(selectionManager.selections[i], { - dimensions: properties.naturalDimensions - }); - } - } - pushCommandForSelections(); - selectionManager._update(false, this); - } - } else if (data.action === "previewCamera") { - if (selectionManager.hasSelection()) { - Camera.mode = "entity"; - Camera.cameraEntity = selectionManager.selections[0]; - } - } else if (data.action === "rescaleDimensions") { - var multiplier = data.percentage / 100.0; - if (selectionManager.hasSelection()) { - selectionManager.saveProperties(); - for (i = 0; i < selectionManager.selections.length; i++) { - properties = selectionManager.savedProperties[selectionManager.selections[i]]; - Entities.editEntity(selectionManager.selections[i], { - dimensions: Vec3.multiply(multiplier, properties.dimensions) - }); - } - pushCommandForSelections(); - selectionManager._update(false, this); - } - } else if (data.action === "reloadClientScripts") { - if (selectionManager.hasSelection()) { - var timestamp = Date.now(); - for (i = 0; i < selectionManager.selections.length; i++) { - Entities.editEntity(selectionManager.selections[i], { - scriptTimestamp: timestamp - }); - } - } - } else if (data.action === "reloadServerScripts") { - if (selectionManager.hasSelection()) { - for (i = 0; i < selectionManager.selections.length; i++) { - Entities.reloadServerScripts(selectionManager.selections[i]); - } - } - } - } else if (data.type === "propertiesPageReady") { - updateSelections(true); - } else if (data.type === "tooltipsRequest") { - emitScriptEvent({ - type: 'tooltipsReply', - tooltips: Script.require('./assets/data/createAppTooltips.json'), - hmdActive: HMD.active, - }); - } else if (data.type === "propertyRangeRequest") { - var propertyRanges = {}; - data.properties.forEach(function (property) { - propertyRanges[property] = Entities.getPropertyInfo(property); - }); - emitScriptEvent({ - type: 'propertyRangeReply', - propertyRanges: propertyRanges, - }); - } else if (data.type === "materialTargetRequest") { - var parentModelData; - var properties = Entities.getEntityProperties(data.entityID, ["type", "parentID"]); - if (properties.type === "Material" && properties.parentID !== Uuid.NULL) { - var parentType = Entities.getEntityProperties(properties.parentID, ["type"]).type; - if (parentType === "Model" || Entities.getNestableType(properties.parentID) === "avatar") { - parentModelData = Graphics.getModel(properties.parentID); - } else if (parentType === "Shape" || parentType === "Box" || parentType === "Sphere") { - parentModelData = {}; - parentModelData.numMeshes = 1; - parentModelData.materialNames = []; - } - } - emitScriptEvent({ - type: 'materialTargetReply', - entityID: data.entityID, - materialTargetData: parentModelData, - }); - } else if (data.type === "zoneListRequest") { - emitScriptEvent({ - type: 'zoneListRequest', - zones: getExistingZoneList() - }); - } - }; - - HMD.displayModeChanged.connect(function() { - emitScriptEvent({ - type: 'hmdActiveChanged', - hmdActive: HMD.active, - }); - }); - - createToolsWindow.webEventReceived.addListener(this, onWebEventReceived); - - webView.webEventReceived.connect(this, onWebEventReceived); - - return that; -}; - - -var PopupMenu = function () { - var self = this; - - var MENU_ITEM_HEIGHT = 21; - var MENU_ITEM_SPACING = 1; - var TEXT_MARGIN = 7; - - var overlays = []; - var overlayInfo = {}; - - var visible = false; - - var upColor = { - red: 0, - green: 0, - blue: 0 - }; - var downColor = { - red: 192, - green: 192, - blue: 192 - }; - var overColor = { - red: 128, - green: 128, - blue: 128 - }; - - self.onSelectMenuItem = function () {}; - - self.addMenuItem = function (name) { - var id = Overlays.addOverlay("text", { - text: name, - backgroundAlpha: 1.0, - backgroundColor: upColor, - topMargin: TEXT_MARGIN, - leftMargin: TEXT_MARGIN, - width: 210, - height: MENU_ITEM_HEIGHT, - font: { - size: 12 - }, - visible: false - }); - overlays.push(id); - overlayInfo[id] = { - name: name - }; - return id; - }; - - self.updateMenuItemText = function (id, newText) { - Overlays.editOverlay(id, { - text: newText - }); - }; - - self.setPosition = function (x, y) { - for (var key in overlayInfo) { - Overlays.editOverlay(key, { - x: x, - y: y - }); - y += MENU_ITEM_HEIGHT + MENU_ITEM_SPACING; - } - }; - - self.onSelected = function () {}; - - var pressingOverlay = null; - var hoveringOverlay = null; - - self.mousePressEvent = function (event) { - if (event.isLeftButton) { - var overlay = Overlays.getOverlayAtPoint({ - x: event.x, - y: event.y - }); - if (overlay in overlayInfo) { - pressingOverlay = overlay; - Overlays.editOverlay(pressingOverlay, { - backgroundColor: downColor - }); - } else { - self.hide(); - } - return false; - } - }; - self.mouseMoveEvent = function (event) { - if (visible) { - var overlay = Overlays.getOverlayAtPoint({ - x: event.x, - y: event.y - }); - if (!pressingOverlay) { - if (hoveringOverlay !== null && overlay !== hoveringOverlay) { - Overlays.editOverlay(hoveringOverlay, { - backgroundColor: upColor - }); - hoveringOverlay = null; - } - if (overlay !== hoveringOverlay && overlay in overlayInfo) { - Overlays.editOverlay(overlay, { - backgroundColor: overColor - }); - hoveringOverlay = overlay; - } - } - } - return false; - }; - self.mouseReleaseEvent = function (event) { - var overlay = Overlays.getOverlayAtPoint({ - x: event.x, - y: event.y - }); - if (pressingOverlay !== null && pressingOverlay !== undefined) { - if (overlay === pressingOverlay) { - self.onSelectMenuItem(overlayInfo[overlay].name); - } - Overlays.editOverlay(pressingOverlay, { - backgroundColor: upColor - }); - pressingOverlay = null; - self.hide(); - } - }; - - self.setVisible = function (newVisible) { - if (newVisible !== visible) { - visible = newVisible; - for (var key in overlayInfo) { - Overlays.editOverlay(key, { - visible: newVisible - }); - } - } - }; - self.show = function () { - self.setVisible(true); - }; - self.hide = function () { - self.setVisible(false); - }; - - function cleanup() { - ContextOverlay.enabled = true; - for (var i = 0; i < overlays.length; i++) { - Overlays.deleteOverlay(overlays[i]); - } - Controller.mousePressEvent.disconnect(self.mousePressEvent); - Controller.mouseMoveEvent.disconnect(self.mouseMoveEvent); - Controller.mouseReleaseEvent.disconnect(self.mouseReleaseEvent); - - Entities.canRezChanged.disconnect(checkEditPermissionsAndUpdate); - Entities.canRezTmpChanged.disconnect(checkEditPermissionsAndUpdate); - Entities.canRezCertifiedChanged.disconnect(checkEditPermissionsAndUpdate); - Entities.canRezTmpCertifiedChanged.disconnect(checkEditPermissionsAndUpdate); - } - - Controller.mousePressEvent.connect(self.mousePressEvent); - Controller.mouseMoveEvent.connect(self.mouseMoveEvent); - Controller.mouseReleaseEvent.connect(self.mouseReleaseEvent); - Script.scriptEnding.connect(cleanup); - - return this; -}; - -function whenPressed(fn) { - return function(value) { - if (value > 0) { - fn(); - } - }; -} - -function whenReleased(fn) { - return function(value) { - if (value === 0) { - fn(); - } - }; -} - -var isOnMacPlatform = Controller.getValue(Controller.Hardware.Application.PlatformMac); - -var mapping = Controller.newMapping(CONTROLLER_MAPPING_NAME); -if (isOnMacPlatform) { - mapping.from([Controller.Hardware.Keyboard.Backspace]).to(deleteKey); -} else { - mapping.from([Controller.Hardware.Keyboard.Delete]).to(deleteKey); -} -mapping.from([Controller.Hardware.Keyboard.T]).to(toggleKey); -mapping.from([Controller.Hardware.Keyboard.F]).to(focusKey); -mapping.from([Controller.Hardware.Keyboard.G]).to(gridKey); -mapping.from([Controller.Hardware.Keyboard.X]) - .when([Controller.Hardware.Keyboard.Control]) - .to(whenReleased(function() { selectionManager.cutSelectedEntities() })); -mapping.from([Controller.Hardware.Keyboard.C]) - .when([Controller.Hardware.Keyboard.Control]) - .to(whenReleased(function() { selectionManager.copySelectedEntities() })); -mapping.from([Controller.Hardware.Keyboard.V]) - .when([Controller.Hardware.Keyboard.Control]) - .to(whenReleased(function() { selectionManager.pasteEntities() })); -mapping.from([Controller.Hardware.Keyboard.D]) - .when([Controller.Hardware.Keyboard.Control]) - .to(whenReleased(function() { selectionManager.duplicateSelection() })); - -// Bind undo to ctrl-shift-z to maintain backwards-compatibility -mapping.from([Controller.Hardware.Keyboard.Z]) - .when([Controller.Hardware.Keyboard.Control, Controller.Hardware.Keyboard.Shift]) - .to(whenPressed(function() { undoHistory.redo() })); - - -mapping.from([Controller.Hardware.Keyboard.P]) - .when([Controller.Hardware.Keyboard.Control, Controller.Hardware.Keyboard.Shift]) - .to(whenReleased(function() { unparentSelectedEntities(); })); - -mapping.from([Controller.Hardware.Keyboard.P]) - .when([Controller.Hardware.Keyboard.Control, !Controller.Hardware.Keyboard.Shift]) - .to(whenReleased(function() { parentSelectedEntities(); })); - -keyUpEventFromUIWindow = function(keyUpEvent) { - var WANT_DEBUG_MISSING_SHORTCUTS = false; - - var pressedValue = 0.0; - - if ((!isOnMacPlatform && keyUpEvent.keyCodeString === "Delete") - || (isOnMacPlatform && keyUpEvent.keyCodeString === "Backspace")) { - - deleteKey(pressedValue); - } else if (keyUpEvent.keyCodeString === "T") { - toggleKey(pressedValue); - } else if (keyUpEvent.keyCodeString === "F") { - focusKey(pressedValue); - } else if (keyUpEvent.keyCodeString === "G") { - gridKey(pressedValue); - } else if (keyUpEvent.controlKey && keyUpEvent.keyCodeString === "X") { - selectionManager.cutSelectedEntities(); - } else if (keyUpEvent.controlKey && keyUpEvent.keyCodeString === "C") { - selectionManager.copySelectedEntities(); - } else if (keyUpEvent.controlKey && keyUpEvent.keyCodeString === "V") { - selectionManager.pasteEntities(); - } else if (keyUpEvent.controlKey && keyUpEvent.keyCodeString === "D") { - selectionManager.duplicateSelection(); - } else if (!isOnMacPlatform && keyUpEvent.controlKey && !keyUpEvent.shiftKey && keyUpEvent.keyCodeString === "Z") { - undoHistory.undo(); // undo is only handled via handleMenuItem on Mac - } else if (keyUpEvent.controlKey && !keyUpEvent.shiftKey && keyUpEvent.keyCodeString === "P") { - parentSelectedEntities(); - } else if (keyUpEvent.controlKey && keyUpEvent.shiftKey && keyUpEvent.keyCodeString === "P") { - unparentSelectedEntities(); - } else if (!isOnMacPlatform && - ((keyUpEvent.controlKey && keyUpEvent.shiftKey && keyUpEvent.keyCodeString === "Z") || - (keyUpEvent.controlKey && keyUpEvent.keyCodeString === "Y"))) { - undoHistory.redo(); // redo is only handled via handleMenuItem on Mac - } else if (WANT_DEBUG_MISSING_SHORTCUTS) { - console.warn("unhandled key event: " + JSON.stringify(keyUpEvent)) - } -}; - -var propertyMenu = new PopupMenu(); - -propertyMenu.onSelectMenuItem = function (name) { - - if (propertyMenu.marketplaceID) { - showMarketplace(propertyMenu.marketplaceID); - } -}; - -var showMenuItem = propertyMenu.addMenuItem("Show in Marketplace"); - -var propertiesTool = new PropertiesTool(); - -selectionDisplay.onSpaceModeChange = function(spaceMode) { - entityListTool.setSpaceMode(spaceMode); - propertiesTool.setSpaceMode(spaceMode); -}; - -function getExistingZoneList() { - var center = {"x": 0, "y": 0, "z": 0}; - var existingZoneIDs = Entities.findEntitiesByType("Zone", center, 17000); - var listExistingZones = []; - var thisZone = {}; - var properties; - for (var k = 0; k < existingZoneIDs.length; k++) { - properties = Entities.getEntityProperties(existingZoneIDs[k], ["name"]); - thisZone = { - "id": existingZoneIDs[k], - "name": properties.name - }; - listExistingZones.push(thisZone); - } - return listExistingZones; -} - -}()); // END LOCAL_SCOPE -======= -// edit.js -// -// Created by Brad Hefta-Gaub on 10/2/14. -// Persist toolbar by HRS 6/11/15. -// Copyright 2014 High Fidelity, Inc. -// -// This script allows you to edit entities with a new UI/UX for mouse and trackpad based editing -// -// 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, 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, OverlaySystemWindow, - keyUpEventFromUIWindow:true */ - -(function() { // BEGIN LOCAL_SCOPE - -"use strict"; - -var EDIT_TOGGLE_BUTTON = "com.highfidelity.interface.system.editButton"; - -var CONTROLLER_MAPPING_NAME = "com.highfidelity.editMode"; - -Script.include([ - "../libraries/stringHelpers.js", - "../libraries/dataViewHelpers.js", - "../libraries/progressDialog.js", - "../libraries/ToolTip.js", - "../libraries/entityCameraTool.js", - "../libraries/utils.js", - "../libraries/entityIconOverlayManager.js", - "../libraries/gridTool.js", - "entityList/entityList.js", - "entitySelectionTool/entitySelectionTool.js" -]); - -var CreateWindow = Script.require('./modules/createWindow.js'); - -var TITLE_OFFSET = 60; -var CREATE_TOOLS_WIDTH = 490; -var MAX_DEFAULT_ENTITY_LIST_HEIGHT = 942; - -var DEFAULT_IMAGE = "https://hifi-content.s3.amazonaws.com/DomainContent/production/no-image.jpg"; - -var createToolsWindow = new CreateWindow( - Script.resolvePath("qml/EditTools.qml"), - 'Create Tools', - 'com.highfidelity.create.createToolsWindow', - function () { - var windowHeight = Window.innerHeight - TITLE_OFFSET; - if (windowHeight > MAX_DEFAULT_ENTITY_LIST_HEIGHT) { - windowHeight = MAX_DEFAULT_ENTITY_LIST_HEIGHT; - } - return { - size: { - x: CREATE_TOOLS_WIDTH, - y: windowHeight - }, - position: { - x: Window.x + Window.innerWidth - CREATE_TOOLS_WIDTH, - y: Window.y + TITLE_OFFSET - } - } - }, - false -); - -/** - * @description Returns true in case we should use the tablet version of the CreateApp - * @returns boolean - */ -var shouldUseEditTabletApp = function() { - return HMD.active || (!HMD.active && !Settings.getValue("desktopTabletBecomesToolbar", true)); -}; - - -var selectionDisplay = SelectionDisplay; -var selectionManager = SelectionManager; - -var PARTICLE_SYSTEM_URL = Script.resolvePath("assets/images/icon-particles.svg"); -var POINT_LIGHT_URL = Script.resolvePath("assets/images/icon-point-light.svg"); -var SPOT_LIGHT_URL = Script.resolvePath("assets/images/icon-spot-light.svg"); -var ZONE_URL = Script.resolvePath("assets/images/icon-zone.svg"); - -var entityIconOverlayManager = new EntityIconOverlayManager(['Light', 'ParticleEffect', 'Zone'], function(entityID) { - var properties = Entities.getEntityProperties(entityID, ['type', 'isSpotlight']); - if (properties.type === 'Light') { - return { - url: properties.isSpotlight ? SPOT_LIGHT_URL : POINT_LIGHT_URL, - }; - } else if (properties.type === 'Zone') { - return { - url: ZONE_URL, - }; - } else { - return { - url: PARTICLE_SYSTEM_URL, - }; - } -}); - -var cameraManager = new CameraManager(); - -var grid = new Grid(); -var gridTool = new GridTool({ - horizontalGrid: grid, - createToolsWindow: createToolsWindow, - shouldUseEditTabletApp: shouldUseEditTabletApp -}); -gridTool.setVisible(false); - -var EntityShapeVisualizer = Script.require('./modules/entityShapeVisualizer.js'); -var entityShapeVisualizer = new EntityShapeVisualizer(["Zone"]); - -var entityListTool = new EntityListTool(shouldUseEditTabletApp); - -selectionManager.addEventListener(function () { - selectionDisplay.updateHandles(); - entityIconOverlayManager.updatePositions(); - entityShapeVisualizer.setEntities(selectionManager.selections); -}); - -var DEGREES_TO_RADIANS = Math.PI / 180.0; -var RADIANS_TO_DEGREES = 180.0 / Math.PI; - -var MIN_ANGULAR_SIZE = 2; -var MAX_ANGULAR_SIZE = 45; -var allowLargeModels = true; -var allowSmallModels = true; - -var DEFAULT_DIMENSION = 0.20; - -var DEFAULT_DIMENSIONS = { - x: DEFAULT_DIMENSION, - y: DEFAULT_DIMENSION, - z: DEFAULT_DIMENSION -}; - -var DEFAULT_LIGHT_DIMENSIONS = Vec3.multiply(20, DEFAULT_DIMENSIONS); - -var MENU_AUTO_FOCUS_ON_SELECT = "Auto Focus on Select"; -var MENU_EASE_ON_FOCUS = "Ease Orientation on Focus"; -var MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE = "Show Lights and Particle Systems in Create Mode"; -var MENU_SHOW_ZONES_IN_EDIT_MODE = "Show Zones in Create Mode"; - -var MENU_CREATE_ENTITIES_GRABBABLE = "Create Entities As Grabbable (except Zones, Particles, and Lights)"; -var MENU_ALLOW_SELECTION_LARGE = "Allow Selecting of Large Models"; -var MENU_ALLOW_SELECTION_SMALL = "Allow Selecting of Small Models"; -var MENU_ALLOW_SELECTION_LIGHTS = "Allow Selecting of Lights"; - -var SETTING_AUTO_FOCUS_ON_SELECT = "autoFocusOnSelect"; -var SETTING_EASE_ON_FOCUS = "cameraEaseOnFocus"; -var SETTING_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE = "showLightsAndParticlesInEditMode"; -var SETTING_SHOW_ZONES_IN_EDIT_MODE = "showZonesInEditMode"; - -var SETTING_EDIT_PREFIX = "Edit/"; - - -var CREATE_ENABLED_ICON = "icons/tablet-icons/edit-i.svg"; -var CREATE_DISABLED_ICON = "icons/tablet-icons/edit-disabled.svg"; - -// marketplace info, etc. not quite ready yet. -var SHOULD_SHOW_PROPERTY_MENU = false; -var INSUFFICIENT_PERMISSIONS_ERROR_MSG = "You do not have the necessary permissions to edit on this domain."; -var INSUFFICIENT_PERMISSIONS_IMPORT_ERROR_MSG = "You do not have the necessary permissions to place items on this domain."; - -var isActive = false; -var createButton = null; - -var IMPORTING_SVO_OVERLAY_WIDTH = 144; -var IMPORTING_SVO_OVERLAY_HEIGHT = 30; -var IMPORTING_SVO_OVERLAY_MARGIN = 5; -var IMPORTING_SVO_OVERLAY_LEFT_MARGIN = 34; -var importingSVOImageOverlay = Overlays.addOverlay("image", { - imageURL: Script.resolvePath("assets/images/hourglass.svg"), - width: 20, - height: 20, - alpha: 1.0, - x: Window.innerWidth - IMPORTING_SVO_OVERLAY_WIDTH, - y: Window.innerHeight - IMPORTING_SVO_OVERLAY_HEIGHT, - visible: false -}); -var importingSVOTextOverlay = Overlays.addOverlay("text", { - font: { - size: 14 - }, - text: "Importing SVO...", - leftMargin: IMPORTING_SVO_OVERLAY_LEFT_MARGIN, - x: Window.innerWidth - IMPORTING_SVO_OVERLAY_WIDTH - IMPORTING_SVO_OVERLAY_MARGIN, - y: Window.innerHeight - IMPORTING_SVO_OVERLAY_HEIGHT - IMPORTING_SVO_OVERLAY_MARGIN, - width: IMPORTING_SVO_OVERLAY_WIDTH, - height: IMPORTING_SVO_OVERLAY_HEIGHT, - backgroundColor: { - red: 80, - green: 80, - blue: 80 - }, - backgroundAlpha: 0.7, - visible: false -}); - -var MARKETPLACE_URL = Account.metaverseServerURL + "/marketplace"; -var marketplaceWindow = new OverlayWebWindow({ - title: 'Marketplace', - source: "about:blank", - width: 900, - height: 700, - visible: false -}); - -function showMarketplace(marketplaceID) { - var url = MARKETPLACE_URL; - if (marketplaceID) { - url = url + "/items/" + marketplaceID; - } - marketplaceWindow.setURL(url); - marketplaceWindow.setVisible(true); - marketplaceWindow.raise(); - - UserActivityLogger.logAction("opened_marketplace"); -} - -function hideMarketplace() { - marketplaceWindow.setVisible(false); - marketplaceWindow.setURL("about:blank"); -} - -// function toggleMarketplace() { -// if (marketplaceWindow.visible) { -// hideMarketplace(); -// } else { -// showMarketplace(); -// } -// } - -function adjustPositionPerBoundingBox(position, direction, registration, dimensions, orientation) { - // Adjust the position such that the bounding box (registration, dimensions 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 GRABBABLE_ENTITIES_MENU_CATEGORY = "Edit"; - -// Handles any edit mode updates required when domains have switched -function checkEditPermissionsAndUpdate() { - if ((createButton === null) || (createButton === undefined)) { - //--EARLY EXIT--( nothing to safely update ) - return; - } - - var hasRezPermissions = (Entities.canRez() || Entities.canRezTmp() || Entities.canRezCertified() || Entities.canRezTmpCertified()); - createButton.editProperties({ - icon: (hasRezPermissions ? CREATE_ENABLED_ICON : CREATE_DISABLED_ICON), - captionColor: (hasRezPermissions ? "#ffffff" : "#888888"), - }); - - if (!hasRezPermissions && isActive) { - that.setActive(false); - tablet.gotoHomeScreen(); - } -} - -// Copies the properties in `b` into `a`. `a` will be modified. -function copyProperties(a, b) { - for (var key in b) { - a[key] = b[key]; - } - return a; -} - -const DEFAULT_DYNAMIC_PROPERTIES = { - dynamic: true, - damping: 0.39347, - angularDamping: 0.39347, - gravity: { x: 0, y: -9.8, z: 0 }, -}; - -const DEFAULT_NON_DYNAMIC_PROPERTIES = { - dynamic: false, - damping: 0, - angularDamping: 0, - gravity: { x: 0, y: 0, z: 0 }, -}; - -const DEFAULT_ENTITY_PROPERTIES = { - All: { - description: "", - rotation: { x: 0, y: 0, z: 0, w: 1 }, - collidesWith: "static,dynamic,kinematic,otherAvatar,myAvatar", - collisionSoundURL: "", - cloneable: false, - ignoreIK: true, - canCastShadow: true, - href: "", - script: "", - serverScripts:"", - velocity: { - x: 0, - y: 0, - z: 0 - }, - angularVelocity: { - x: 0, - y: 0, - z: 0 - }, - restitution: 0.5, - friction: 0.5, - density: 1000, - dynamic: false, - }, - Shape: { - shape: "Box", - dimensions: { x: 0.2, y: 0.2, z: 0.2 }, - color: { red: 0, green: 180, blue: 239 }, - }, - Text: { - text: "Text", - dimensions: { - x: 0.65, - y: 0.3, - z: 0.01 - }, - textColor: { red: 255, green: 255, blue: 255 }, - backgroundColor: { red: 0, green: 0, blue: 0 }, - lineHeight: 0.06, - faceCamera: false, - }, - Zone: { - dimensions: { - x: 10, - y: 10, - z: 10 - }, - flyingAllowed: true, - ghostingAllowed: true, - filter: "", - keyLightMode: "inherit", - keyLightColor: { red: 255, green: 255, blue: 255 }, - keyLight: { - intensity: 1.0, - direction: { - x: 0.0, - y: -0.707106769084930, // 45 degrees - z: 0.7071067690849304 - }, - castShadows: true - }, - ambientLightMode: "inherit", - ambientLight: { - ambientIntensity: 0.5, - ambientURL: "" - }, - hazeMode: "inherit", - haze: { - hazeRange: 1000, - hazeAltitudeEffect: false, - hazeBaseRef: 0, - hazeColor: { - red: 128, - green: 154, - blue: 179 - }, - hazeBackgroundBlend: 0, - hazeEnableGlare: false, - hazeGlareColor: { - red: 255, - green: 229, - blue: 179 - }, - }, - shapeType: "box", - bloomMode: "inherit", - avatarPriority: "inherit", - screenshare: "inherit", - }, - Model: { - collisionShape: "none", - compoundShapeURL: "", - animation: { - url: "", - running: false, - allowTranslation: false, - loop: true, - hold: false, - currentFrame: 0, - firstFrame: 0, - lastFrame: 100000, - fps: 30.0, - } - }, - Image: { - dimensions: { - x: 0.5385, - y: 0.2819, - z: 0.0092 - }, - shapeType: "box", - collisionless: true, - keepAspectRatio: false, - imageURL: DEFAULT_IMAGE - }, - Web: { - dimensions: { - x: 1.6, - y: 0.9, - z: 0.01 - }, - sourceUrl: "https://projectathena.io/", - dpi: 30, - }, - ParticleEffect: { - lifespan: 1.5, - maxParticles: 10, - textures: "https://content.highfidelity.com/DomainContent/production/Particles/wispy-smoke.png", - emitRate: 5.5, - emitSpeed: 0, - speedSpread: 0, - emitDimensions: { x: 0, y: 0, z: 0 }, - emitOrientation: { x: 0, y: 0, z: 0, w: 1 }, - emitterShouldTrail: true, - particleRadius: 0.25, - radiusStart: 0, - radiusSpread: 0, - particleColor: { - red: 255, - green: 255, - blue: 255 - }, - colorSpread: { - red: 0, - green: 0, - blue: 0 - }, - alpha: 0, - alphaStart: 1, - alphaSpread: 0, - emitAcceleration: { - x: 0, - y: 2.5, - z: 0 - }, - accelerationSpread: { - x: 0, - y: 0, - z: 0 - }, - particleSpin: 0, - spinSpread: 0, - rotateWithEntity: false, - polarStart: 0, - polarFinish: Math.PI, - azimuthStart: -Math.PI, - azimuthFinish: Math.PI - }, - Light: { - color: { red: 255, green: 255, blue: 255 }, - intensity: 5.0, - dimensions: DEFAULT_LIGHT_DIMENSIONS, - falloffRadius: 1.0, - isSpotlight: false, - exponent: 1.0, - cutoff: 75.0, - }, -}; - -var toolBar = (function () { - var EDIT_SETTING = "io.highfidelity.isEditing"; // for communication with other scripts - var that = {}, - toolBar, - activeButton = null, - systemToolbar = null, - dialogWindow = null, - tablet = null; - - function createNewEntity(requestedProperties) { - var dimensions = requestedProperties.dimensions ? requestedProperties.dimensions : DEFAULT_DIMENSIONS; - var position = getPositionToCreateEntity(); - var entityID = null; - - var properties = {}; - - copyProperties(properties, DEFAULT_ENTITY_PROPERTIES.All); - - var type = requestedProperties.type; - if (type === "Box" || type === "Sphere") { - copyProperties(properties, DEFAULT_ENTITY_PROPERTIES.Shape); - } else { - copyProperties(properties, DEFAULT_ENTITY_PROPERTIES[type]); - } - - // We apply the requested properties first so that they take priority over any default properties. - copyProperties(properties, requestedProperties); - - if (properties.dynamic) { - copyProperties(properties, DEFAULT_DYNAMIC_PROPERTIES); - } else { - copyProperties(properties, DEFAULT_NON_DYNAMIC_PROPERTIES); - } - - - if (position !== null && position !== undefined) { - 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", "Image", "Web", "Material"]; - 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 }; - registration = DEFAULT_REGISTRATION; - } - - var orientation = properties.orientation; - if (orientation === undefined) { - properties.orientation = MyAvatar.orientation; - var DEFAULT_ORIENTATION = properties.orientation; - orientation = DEFAULT_ORIENTATION; - } else { - // If the orientation is already defined, we perform the corresponding rotation assuming that - // our start referential is the avatar referential. - properties.orientation = Quat.multiply(MyAvatar.orientation, properties.orientation); - var DEFAULT_ORIENTATION = properties.orientation; - orientation = DEFAULT_ORIENTATION; - } - - position = adjustPositionPerBoundingBox(position, direction, registration, dimensions, orientation); - } - - position = grid.snapToSurface(grid.snapToGrid(position, false, dimensions), dimensions); - properties.position = position; - - if (!properties.grab) { - properties.grab = {}; - if (Menu.isOptionChecked(MENU_CREATE_ENTITIES_GRABBABLE) && - !(properties.type === "Zone" || properties.type === "Light" - || properties.type === "ParticleEffect" || properties.type === "Web")) { - properties.grab.grabbable = true; - } else { - properties.grab.grabbable = false; - } - } - - if (type === "Model") { - properties.visible = false; - } - - entityID = Entities.addEntity(properties); - - var dimensionsCheckCallback = function(){ - 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", "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(false, this); - } else if (dimensionsCheckCount < MAX_DIMENSIONS_CHECKS) { - Script.setTimeout(dimensionsCheckFunction, DIMENSIONS_CHECK_INTERVAL); - } - }; - Script.setTimeout(dimensionsCheckFunction, DIMENSIONS_CHECK_INTERVAL); - } - } - // Make sure the entity is loaded before we try to figure out - // its dimensions. - var MAX_LOADED_CHECKS = 10; - var LOADED_CHECK_INTERVAL = 100; - var isLoadedCheckCount = 0; - var entityIsLoadedCheck = function() { - isLoadedCheckCount++; - if (isLoadedCheckCount === MAX_LOADED_CHECKS || Entities.isLoaded(entityID)) { - var naturalDimensions = Entities.getEntityProperties(entityID, "naturalDimensions").naturalDimensions - Entities.editEntity(entityID, { - visible: true, - dimensions: naturalDimensions - }) - dimensionsCheckCallback(); - return; - } - Script.setTimeout(entityIsLoadedCheck, LOADED_CHECK_INTERVAL); - } - Script.setTimeout(entityIsLoadedCheck, LOADED_CHECK_INTERVAL); - - SelectionManager.addEntity(entityID, false, this); - SelectionManager.saveProperties(); - pushCommandForSelections([{ - entityID: entityID, - properties: properties - }], [], true); - - } else { - Window.notifyEditError("Can't create " + properties.type + ": " + - properties.type + " would be out of bounds."); - } - - selectionManager.clearSelections(this); - entityListTool.sendUpdate(); - selectionManager.setSelections([entityID], this); - - Window.setFocus(); - - return entityID; - } - - function closeExistingDialogWindow() { - if (dialogWindow) { - dialogWindow.close(); - dialogWindow = null; - } - } - - function cleanup() { - that.setActive(false); - if (tablet) { - tablet.removeButton(activeButton); - } - if (systemToolbar) { - systemToolbar.removeButton(EDIT_TOGGLE_BUTTON); - } - } - - var buttonHandlers = {}; // only used to tablet mode - - function addButton(name, handler) { - buttonHandlers[name] = handler; - } - - var SHAPE_TYPE_NONE = 0; - var SHAPE_TYPE_SIMPLE_HULL = 1; - var SHAPE_TYPE_SIMPLE_COMPOUND = 2; - var SHAPE_TYPE_STATIC_MESH = 3; - var SHAPE_TYPE_BOX = 4; - var SHAPE_TYPE_SPHERE = 5; - var DYNAMIC_DEFAULT = false; - - var MATERIAL_MODE_UV = 0; - var MATERIAL_MODE_PROJECTED = 1; - - function handleNewModelDialogResult(result) { - if (result) { - var url = result.url; - var shapeType; - switch (result.collisionShapeIndex) { - case SHAPE_TYPE_SIMPLE_HULL: - shapeType = "simple-hull"; - break; - case SHAPE_TYPE_SIMPLE_COMPOUND: - shapeType = "simple-compound"; - break; - case SHAPE_TYPE_STATIC_MESH: - shapeType = "static-mesh"; - break; - case SHAPE_TYPE_BOX: - shapeType = "box"; - break; - case SHAPE_TYPE_SPHERE: - shapeType = "sphere"; - break; - default: - shapeType = "none"; - } - - var dynamic = result.dynamic !== null ? result.dynamic : DYNAMIC_DEFAULT; - if (shapeType === "static-mesh" && dynamic) { - // The prompt should prevent this case - print("Error: model cannot be both static mesh and dynamic. This should never happen."); - } else if (url) { - createNewEntity({ - type: "Model", - modelURL: url, - shapeType: shapeType, - grab: { - grabbable: result.grabbable - }, - dynamic: dynamic, - }); - } - } - } - - function handleNewMaterialDialogResult(result) { - if (result) { - var materialURL = result.textInput; - //var materialMappingMode; - //switch (result.comboBox) { - // case MATERIAL_MODE_PROJECTED: - // materialMappingMode = "projected"; - // break; - // default: - // shapeType = "uv"; - //} - var materialData = ""; - if (materialURL.startsWith("materialData")) { - materialData = JSON.stringify({ - "materials": {} - }); - } - - var DEFAULT_LAYERED_MATERIAL_PRIORITY = 1; - if (materialURL) { - createNewEntity({ - type: "Material", - materialURL: materialURL, - //materialMappingMode: materialMappingMode, - priority: DEFAULT_LAYERED_MATERIAL_PRIORITY, - materialData: materialData - }); - } - } - } - - function fromQml(message) { // messages are {method, params}, like json-rpc. See also sendToQml. - var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); - tablet.popFromStack(); - switch (message.method) { - case "newModelDialogAdd": - handleNewModelDialogResult(message.params); - closeExistingDialogWindow(); - break; - case "newModelDialogCancel": - closeExistingDialogWindow(); - break; - case "newEntityButtonClicked": - buttonHandlers[message.params.buttonName](); - break; - case "newMaterialDialogAdd": - handleNewMaterialDialogResult(message.params); - closeExistingDialogWindow(); - break; - case "newMaterialDialogCancel": - closeExistingDialogWindow(); - break; - } - } - - var entitiesToDelete = []; - var deletedEntityTimer = null; - var DELETE_ENTITY_TIMER_TIMEOUT = 100; - - function checkDeletedEntityAndUpdate(entityID) { - // Allow for multiple entity deletes before updating the entities selected. - entitiesToDelete.push(entityID); - if (deletedEntityTimer !== null) { - Script.clearTimeout(deletedEntityTimer); - } - deletedEntityTimer = Script.setTimeout(function () { - if (entitiesToDelete.length > 0) { - selectionManager.removeEntities(entitiesToDelete, this); - } - entityListTool.removeEntities(entitiesToDelete, selectionManager.selections); - entitiesToDelete = []; - deletedEntityTimer = null; - }, DELETE_ENTITY_TIMER_TIMEOUT); - } - - function initialize() { - Script.scriptEnding.connect(cleanup); - Window.domainChanged.connect(function () { - if (isActive) { - tablet.gotoHomeScreen(); - } - that.setActive(false); - that.clearEntityList(); - checkEditPermissionsAndUpdate(); - }); - - HMD.displayModeChanged.connect(function() { - if (isActive) { - tablet.gotoHomeScreen(); - } - that.setActive(false); - }); - - Entities.canAdjustLocksChanged.connect(function (canAdjustLocks) { - if (isActive && !canAdjustLocks) { - that.setActive(false); - } - checkEditPermissionsAndUpdate(); - }); - - Entities.canRezChanged.connect(checkEditPermissionsAndUpdate); - Entities.canRezTmpChanged.connect(checkEditPermissionsAndUpdate); - Entities.canRezCertifiedChanged.connect(checkEditPermissionsAndUpdate); - Entities.canRezTmpCertifiedChanged.connect(checkEditPermissionsAndUpdate); - var hasRezPermissions = (Entities.canRez() || Entities.canRezTmp() || Entities.canRezCertified() || Entities.canRezTmpCertified()); - - Entities.deletingEntity.connect(checkDeletedEntityAndUpdate); - - var createButtonIconRsrc = (hasRezPermissions ? CREATE_ENABLED_ICON : CREATE_DISABLED_ICON); - tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); - activeButton = tablet.addButton({ - captionColor: hasRezPermissions ? "#ffffff" : "#888888", - icon: createButtonIconRsrc, - activeIcon: "icons/tablet-icons/edit-a.svg", - text: "CREATE", - sortOrder: 10 - }); - createButton = activeButton; - tablet.screenChanged.connect(function (type, url) { - var isGoingToHomescreenOnDesktop = (!shouldUseEditTabletApp() && - (url === 'hifi/tablet/TabletHome.qml' || url === '')); - if (isActive && (type !== "QML" || url !== Script.resolvePath("qml/Edit.qml")) && !isGoingToHomescreenOnDesktop) { - that.setActive(false); - } - }); - tablet.fromQml.connect(fromQml); - createToolsWindow.fromQml.addListener(fromQml); - - createButton.clicked.connect(function() { - if ( ! (Entities.canRez() || Entities.canRezTmp() || Entities.canRezCertified() || Entities.canRezTmpCertified()) ) { - Window.notifyEditError(INSUFFICIENT_PERMISSIONS_ERROR_MSG); - return; - } - - that.toggle(); - }); - - addButton("importEntitiesButton", function() { - Window.browseChanged.connect(onFileOpenChanged); - Window.browseAsync("Select Model to Import", "", "*.json"); - }); - - addButton("openAssetBrowserButton", function() { - Window.showAssetServer(); - }); - function createNewEntityDialogButtonCallback(entityType) { - return function() { - if (shouldUseEditTabletApp()) { - // tablet version of new-model dialog - var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); - tablet.pushOntoStack(Script.resolvePath("qml/New" + entityType + "Dialog.qml")); - } else { - closeExistingDialogWindow(); - var qmlPath = Script.resolvePath("qml/New" + entityType + "Window.qml"); - var DIALOG_WINDOW_SIZE = { x: 500, y: 300 }; - dialogWindow = Desktop.createWindow(qmlPath, { - title: "New " + entityType + " Entity", - additionalFlags: Desktop.ALWAYS_ON_TOP | Desktop.CLOSE_BUTTON_HIDES, - presentationMode: Desktop.PresentationMode.NATIVE, - size: DIALOG_WINDOW_SIZE, - visible: true - }); - dialogWindow.fromQml.connect(fromQml); - } - }; - } - - addButton("newModelButton", createNewEntityDialogButtonCallback("Model")); - - addButton("newShapeButton", function () { - createNewEntity({ - type: "Shape", - shape: "Cube", - }); - }); - - addButton("newLightButton", function () { - createNewEntity({ - type: "Light", - }); - }); - - addButton("newTextButton", function () { - createNewEntity({ - type: "Text", - }); - }); - - addButton("newImageButton", function () { - createNewEntity({ - type: "Image", - }); - }); - - addButton("newWebButton", function () { - createNewEntity({ - type: "Web", - }); - }); - - addButton("newZoneButton", function () { - createNewEntity({ - type: "Zone", - }); - }); - - addButton("newParticleButton", function () { - createNewEntity({ - type: "ParticleEffect", - }); - }); - - addButton("newMaterialButton", createNewEntityDialogButtonCallback("Material")); - - var deactivateCreateIfDesktopWindowsHidden = function() { - if (!shouldUseEditTabletApp() && !entityListTool.isVisible() && !createToolsWindow.isVisible()) { - that.setActive(false); - } - }; - entityListTool.interactiveWindowHidden.addListener(this, deactivateCreateIfDesktopWindowsHidden); - createToolsWindow.interactiveWindowHidden.addListener(this, deactivateCreateIfDesktopWindowsHidden); - - that.setActive(false); - } - - that.clearEntityList = function () { - entityListTool.clearEntityList(); - }; - - that.toggle = function () { - that.setActive(!isActive); - if (!isActive) { - tablet.gotoHomeScreen(); - } - }; - - that.setActive = function (active) { - ContextOverlay.enabled = !active; - Settings.setValue(EDIT_SETTING, active); - if (active) { - Controller.captureEntityClickEvents(); - } else { - Controller.releaseEntityClickEvents(); - - closeExistingDialogWindow(); - } - if (active === isActive) { - return; - } - if (active && !Entities.canRez() && !Entities.canRezTmp() && !Entities.canRezCertified() && !Entities.canRezTmpCertified()) { - Window.notifyEditError(INSUFFICIENT_PERMISSIONS_ERROR_MSG); - return; - } - Messages.sendLocalMessage("edit-events", JSON.stringify({ - enabled: active - })); - isActive = active; - activeButton.editProperties({isActive: isActive}); - undoHistory.setEnabled(isActive); - - var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); - - if (!isActive) { - entityListTool.setVisible(false); - gridTool.setVisible(false); - grid.setEnabled(false); - propertiesTool.setVisible(false); - selectionManager.clearSelections(this); - cameraManager.disable(); - selectionDisplay.disableTriggerMapping(); - tablet.landscape = false; - Controller.disableMapping(CONTROLLER_MAPPING_NAME); - } else { - if (shouldUseEditTabletApp()) { - tablet.loadQMLSource(Script.resolvePath("qml/Edit.qml"), true); - } else { - // make other apps inactive while in desktop mode - tablet.gotoHomeScreen(); - } - UserActivityLogger.enabledEdit(); - entityListTool.setVisible(true); - entityListTool.sendUpdate(); - gridTool.setVisible(true); - grid.setEnabled(true); - propertiesTool.setVisible(true); - selectionDisplay.enableTriggerMapping(); - print("starting tablet in landscape mode"); - tablet.landscape = true; - Controller.enableMapping(CONTROLLER_MAPPING_NAME); - // 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(); - } - entityIconOverlayManager.setVisible(isActive && Menu.isOptionChecked(MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE)); - Entities.setDrawZoneBoundaries(isActive && Menu.isOptionChecked(MENU_SHOW_ZONES_IN_EDIT_MODE)); - }; - - initialize(); - return that; -})(); - -var selectedEntityID; -var orientation; -var intersection; - - -function rayPlaneIntersection(pickRay, point, normal) { // - // - // This version of the test returns the intersection of a line with a plane - // - var collides = Vec3.dot(pickRay.direction, normal); - - var d = -Vec3.dot(point, normal); - var t = -(Vec3.dot(pickRay.origin, normal) + d) / collides; - - return Vec3.sum(pickRay.origin, Vec3.multiply(pickRay.direction, t)); -} - -function rayPlaneIntersection2(pickRay, point, normal) { - // - // This version of the test returns false if the ray is directed away from the plane - // - var collides = Vec3.dot(pickRay.direction, normal); - var d = -Vec3.dot(point, normal); - var t = -(Vec3.dot(pickRay.origin, normal) + d) / collides; - if (t < 0.0) { - return false; - } else { - return Vec3.sum(pickRay.origin, Vec3.multiply(pickRay.direction, t)); - } -} - -function findClickedEntity(event) { - var pickZones = event.isControl; - - if (pickZones) { - Entities.setZonesArePickable(true); - } - - var pickRay = Camera.computePickRay(event.x, event.y); - var tabletIDs = getMainTabletIDs(); - if (tabletIDs.length > 0) { - var overlayResult = Overlays.findRayIntersection(pickRay, true, tabletIDs); - if (overlayResult.intersects) { - return null; - } - } - - var entityResult = Entities.findRayIntersection(pickRay, true); // want precision picking - var iconResult = entityIconOverlayManager.findRayIntersection(pickRay); - iconResult.accurate = true; - - if (pickZones) { - Entities.setZonesArePickable(false); - } - - var result; - - if (iconResult.intersects) { - result = iconResult; - } else if (entityResult.intersects) { - result = entityResult; - } else { - return null; - } - - if (!result.accurate) { - return null; - } - - var foundEntity = result.entityID; - return { - pickRay: pickRay, - entityID: foundEntity, - intersection: result.intersection - }; -} - -// Handles selections on overlays while in edit mode by querying entities from -// entityIconOverlayManager. -function handleOverlaySelectionToolUpdates(channel, message, sender) { - var wantDebug = false; - if (sender !== MyAvatar.sessionUUID || channel !== 'entityToolUpdates') - return; - - var data = JSON.parse(message); - - if (data.method === "selectOverlay") { - if (!selectionDisplay.triggered() || selectionDisplay.triggeredHand === data.hand) { - if (wantDebug) { - print("setting selection to overlay " + data.overlayID); - } - var entity = entityIconOverlayManager.findEntity(data.overlayID); - - if (entity !== null) { - selectionManager.setSelections([entity], this); - } - } - } -} - -function handleMessagesReceived(channel, message, sender) { - switch( channel ){ - case 'entityToolUpdates': { - handleOverlaySelectionToolUpdates( channel, message, sender ); - break; - } - default: { - return; - } - } -} - -Messages.subscribe("entityToolUpdates"); -Messages.messageReceived.connect(handleMessagesReceived); - -var mouseHasMovedSincePress = false; -var mousePressStartTime = 0; -var mousePressStartPosition = { - x: 0, - y: 0 -}; -var mouseDown = false; - -function mousePressEvent(event) { - mouseDown = true; - mousePressStartPosition = { - x: event.x, - y: event.y - }; - mousePressStartTime = Date.now(); - mouseHasMovedSincePress = false; - mouseCapturedByTool = false; - - if (propertyMenu.mousePressEvent(event) || progressDialog.mousePressEvent(event)) { - mouseCapturedByTool = true; - return; - } - if (isActive) { - if (cameraManager.mousePressEvent(event) || selectionDisplay.mousePressEvent(event)) { - // Event handled; do nothing. - return; - } - } -} - -var mouseCapturedByTool = false; -var lastMousePosition = null; -var CLICK_TIME_THRESHOLD = 500 * 1000; // 500 ms -var CLICK_MOVE_DISTANCE_THRESHOLD = 20; -var IDLE_MOUSE_TIMEOUT = 200; - -var lastMouseMoveEvent = null; - -function mouseMoveEventBuffered(event) { - lastMouseMoveEvent = event; -} - -function mouseMove(event) { - if (mouseDown && !mouseHasMovedSincePress) { - var timeSincePressMicro = Date.now() - mousePressStartTime; - - var dX = mousePressStartPosition.x - event.x; - var dY = mousePressStartPosition.y - event.y; - var sqDist = (dX * dX) + (dY * dY); - - // If less than CLICK_TIME_THRESHOLD has passed since the mouse click AND the mouse has moved - // less than CLICK_MOVE_DISTANCE_THRESHOLD distance, then don't register this as a mouse move - // yet. The goal is to provide mouse clicks that are more lenient to small movements. - if (timeSincePressMicro < CLICK_TIME_THRESHOLD && sqDist < CLICK_MOVE_DISTANCE_THRESHOLD) { - return; - } - mouseHasMovedSincePress = true; - } - - if (!isActive) { - return; - } - - // allow the selectionDisplay and cameraManager to handle the event first, if it doesn't handle it, then do our own thing - if (selectionDisplay.mouseMoveEvent(event) || propertyMenu.mouseMoveEvent(event) || cameraManager.mouseMoveEvent(event)) { - return; - } - - lastMousePosition = { - x: event.x, - y: event.y - }; -} - -function mouseReleaseEvent(event) { - mouseDown = false; - - if (lastMouseMoveEvent) { - mouseMove(lastMouseMoveEvent); - lastMouseMoveEvent = null; - } - if (propertyMenu.mouseReleaseEvent(event)) { - return true; - } - if (isActive && selectionManager.hasSelection()) { - tooltip.show(false); - } - if (mouseCapturedByTool) { - - return; - } - - cameraManager.mouseReleaseEvent(event); - - if (!mouseHasMovedSincePress) { - mouseClickEvent(event); - } -} - -function wasTabletOrEditHandleClicked(event) { - var rayPick = Camera.computePickRay(event.x, event.y); - var result = Overlays.findRayIntersection(rayPick, true); - if (result.intersects) { - var overlayID = result.overlayID; - var tabletIDs = getMainTabletIDs(); - if (tabletIDs.indexOf(overlayID) >= 0) { - return true; - } else if (selectionDisplay.isEditHandle(overlayID)) { - return true; - } - } - return false; -} - -function mouseClickEvent(event) { - var wantDebug = false; - var result, properties, tabletClicked; - if (isActive && event.isLeftButton) { - result = findClickedEntity(event); - var tabletOrEditHandleClicked = wasTabletOrEditHandleClicked(event); - if (tabletOrEditHandleClicked) { - return; - } - - if (result === null || result === undefined) { - if (!event.isShifted) { - selectionManager.clearSelections(this); - } - return; - } - toolBar.setActive(true); - var pickRay = result.pickRay; - var foundEntity = result.entityID; - if (HMD.tabletID && foundEntity === HMD.tabletID) { - return; - } - properties = Entities.getEntityProperties(foundEntity); - var halfDiagonal = Vec3.length(properties.dimensions) / 2.0; - - if (wantDebug) { - print("Checking properties: " + properties.id + " " + " - Half Diagonal:" + halfDiagonal); - } - // P P - Model - // /| A - Palm - // / | d B - unit vector toward tip - // / | X - base of the perpendicular line - // A---X----->B d - distance fom axis - // x x - distance from A - // - // |X-A| = (P-A).B - // X === A + ((P-A).B)B - // d = |P-X| - - var A = pickRay.origin; - var B = Vec3.normalize(pickRay.direction); - var P = properties.position; - - var x = Vec3.dot(Vec3.subtract(P, A), B); - - var angularSize = 2 * Math.atan(halfDiagonal / Vec3.distance(Camera.getPosition(), properties.position)) * - 180 / Math.PI; - - var sizeOK = (allowLargeModels || angularSize < MAX_ANGULAR_SIZE) && - (allowSmallModels || angularSize > MIN_ANGULAR_SIZE); - - if (0 < x && sizeOK) { - selectedEntityID = foundEntity; - orientation = MyAvatar.orientation; - intersection = rayPlaneIntersection(pickRay, P, Quat.getForward(orientation)); - - if (!event.isShifted) { - selectionManager.setSelections([foundEntity], this); - } else { - selectionManager.addEntity(foundEntity, true, this); - } - selectionManager.saveProperties(); - - if (wantDebug) { - print("Model selected: " + foundEntity); - } - selectionDisplay.select(selectedEntityID, event); - - if (Menu.isOptionChecked(MENU_AUTO_FOCUS_ON_SELECT)) { - cameraManager.enable(); - cameraManager.focus(selectionManager.worldPosition, - selectionManager.worldDimensions, - Menu.isOptionChecked(MENU_EASE_ON_FOCUS)); - } - } - } else if (event.isRightButton) { - result = findClickedEntity(event); - if (result) { - if (SHOULD_SHOW_PROPERTY_MENU !== true) { - return; - } - properties = Entities.getEntityProperties(result.entityID); - if (properties.marketplaceID) { - propertyMenu.marketplaceID = properties.marketplaceID; - propertyMenu.updateMenuItemText(showMenuItem, "Show in Marketplace"); - } else { - propertyMenu.marketplaceID = null; - propertyMenu.updateMenuItemText(showMenuItem, "No marketplace info"); - } - propertyMenu.setPosition(event.x, event.y); - propertyMenu.show(); - } else { - propertyMenu.hide(); - } - } -} - -Controller.mousePressEvent.connect(mousePressEvent); -Controller.mouseMoveEvent.connect(mouseMoveEventBuffered); -Controller.mouseReleaseEvent.connect(mouseReleaseEvent); - - -// In order for editVoxels and editModels to play nice together, they each check to see if a "delete" menu item already -// exists. If it doesn't they add it. If it does they don't. They also only delete the menu item if they were the one that -// added it. -var modelMenuAddedDelete = false; -var originalLightsArePickable = Entities.getLightsArePickable(); - -function setupModelMenus() { - // adj our menuitems - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: "Undo", - shortcutKey: 'Ctrl+Z', - position: 0, - }); - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: "Redo", - shortcutKey: 'Ctrl+Y', - position: 1, - }); - - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: "Entities", - isSeparator: true - }); - if (!Menu.menuItemExists("Edit", "Delete")) { - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: "Delete", - shortcutKeyEvent: { - text: "delete" - }, - afterItem: "Entities", - }); - modelMenuAddedDelete = true; - } - - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: "Parent Entity to Last", - afterItem: "Entities" - }); - - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: "Unparent Entity", - afterItem: "Parent Entity to Last" - }); - - Menu.addMenuItem({ - menuName: GRABBABLE_ENTITIES_MENU_CATEGORY, - menuItemName: MENU_CREATE_ENTITIES_GRABBABLE, - afterItem: "Unparent Entity", - isCheckable: true, - isChecked: Settings.getValue(SETTING_EDIT_PREFIX + MENU_CREATE_ENTITIES_GRABBABLE, true) - }); - - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: MENU_ALLOW_SELECTION_LARGE, - afterItem: MENU_CREATE_ENTITIES_GRABBABLE, - isCheckable: true, - isChecked: Settings.getValue(SETTING_EDIT_PREFIX + MENU_ALLOW_SELECTION_LARGE, true) - }); - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: MENU_ALLOW_SELECTION_SMALL, - afterItem: MENU_ALLOW_SELECTION_LARGE, - isCheckable: true, - isChecked: Settings.getValue(SETTING_EDIT_PREFIX + MENU_ALLOW_SELECTION_SMALL, true) - }); - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: MENU_ALLOW_SELECTION_LIGHTS, - afterItem: MENU_ALLOW_SELECTION_SMALL, - isCheckable: true, - isChecked: Settings.getValue(SETTING_EDIT_PREFIX + MENU_ALLOW_SELECTION_LIGHTS, false) - }); - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: "Select All Entities In Box", - afterItem: "Allow Selecting of Lights" - }); - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: "Select All Entities Touching Box", - afterItem: "Select All Entities In Box" - }); - - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: "Export Entities", - afterItem: "Entities" - }); - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: "Import Entities", - afterItem: "Export Entities" - }); - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: "Import Entities from URL", - afterItem: "Import Entities" - }); - - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: MENU_AUTO_FOCUS_ON_SELECT, - isCheckable: true, - isChecked: Settings.getValue(SETTING_AUTO_FOCUS_ON_SELECT) === "true" - }); - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: MENU_EASE_ON_FOCUS, - afterItem: MENU_AUTO_FOCUS_ON_SELECT, - isCheckable: true, - isChecked: Settings.getValue(SETTING_EASE_ON_FOCUS) === "true" - }); - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE, - afterItem: MENU_EASE_ON_FOCUS, - isCheckable: true, - isChecked: Settings.getValue(SETTING_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE) !== "false" - }); - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: MENU_SHOW_ZONES_IN_EDIT_MODE, - afterItem: MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE, - isCheckable: true, - isChecked: Settings.getValue(SETTING_SHOW_ZONES_IN_EDIT_MODE) !== "false" - }); - - Entities.setLightsArePickable(false); -} - -setupModelMenus(); // do this when first running our script. - -function cleanupModelMenus() { - Menu.removeMenuItem("Edit", "Undo"); - Menu.removeMenuItem("Edit", "Redo"); - - Menu.removeSeparator("Edit", "Entities"); - if (modelMenuAddedDelete) { - // delete our menuitems - Menu.removeMenuItem("Edit", "Delete"); - } - - Menu.removeMenuItem("Edit", "Parent Entity to Last"); - Menu.removeMenuItem("Edit", "Unparent Entity"); - Menu.removeMenuItem("Edit", "Allow Selecting of Large Models"); - Menu.removeMenuItem("Edit", "Allow Selecting of Small Models"); - Menu.removeMenuItem("Edit", "Allow Selecting of Lights"); - Menu.removeMenuItem("Edit", "Select All Entities In Box"); - Menu.removeMenuItem("Edit", "Select All Entities Touching Box"); - - Menu.removeMenuItem("Edit", "Export Entities"); - Menu.removeMenuItem("Edit", "Import Entities"); - Menu.removeMenuItem("Edit", "Import Entities from URL"); - - Menu.removeMenuItem("Edit", MENU_AUTO_FOCUS_ON_SELECT); - Menu.removeMenuItem("Edit", MENU_EASE_ON_FOCUS); - Menu.removeMenuItem("Edit", MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE); - Menu.removeMenuItem("Edit", MENU_SHOW_ZONES_IN_EDIT_MODE); - Menu.removeMenuItem("Edit", MENU_CREATE_ENTITIES_GRABBABLE); -} - -Script.scriptEnding.connect(function () { - toolBar.setActive(false); - Settings.setValue(SETTING_AUTO_FOCUS_ON_SELECT, Menu.isOptionChecked(MENU_AUTO_FOCUS_ON_SELECT)); - Settings.setValue(SETTING_EASE_ON_FOCUS, Menu.isOptionChecked(MENU_EASE_ON_FOCUS)); - Settings.setValue(SETTING_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE, Menu.isOptionChecked(MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE)); - Settings.setValue(SETTING_SHOW_ZONES_IN_EDIT_MODE, Menu.isOptionChecked(MENU_SHOW_ZONES_IN_EDIT_MODE)); - - Settings.setValue(SETTING_EDIT_PREFIX + MENU_ALLOW_SELECTION_LARGE, Menu.isOptionChecked(MENU_ALLOW_SELECTION_LARGE)); - Settings.setValue(SETTING_EDIT_PREFIX + MENU_ALLOW_SELECTION_SMALL, Menu.isOptionChecked(MENU_ALLOW_SELECTION_SMALL)); - Settings.setValue(SETTING_EDIT_PREFIX + MENU_ALLOW_SELECTION_LIGHTS, Menu.isOptionChecked(MENU_ALLOW_SELECTION_LIGHTS)); - - - progressDialog.cleanup(); - cleanupModelMenus(); - tooltip.cleanup(); - selectionDisplay.cleanup(); - entityShapeVisualizer.cleanup(); - Entities.setLightsArePickable(originalLightsArePickable); - - Overlays.deleteOverlay(importingSVOImageOverlay); - Overlays.deleteOverlay(importingSVOTextOverlay); - - Controller.keyReleaseEvent.disconnect(keyReleaseEvent); - Controller.keyPressEvent.disconnect(keyPressEvent); - - Controller.mousePressEvent.disconnect(mousePressEvent); - Controller.mouseMoveEvent.disconnect(mouseMoveEventBuffered); - Controller.mouseReleaseEvent.disconnect(mouseReleaseEvent); - - Messages.messageReceived.disconnect(handleMessagesReceived); - Messages.unsubscribe("entityToolUpdates"); - createButton = null; -}); - -var lastOrientation = null; -var lastPosition = null; - -// Do some stuff regularly, like check for placement of various overlays -Script.update.connect(function (deltaTime) { - progressDialog.move(); - selectionDisplay.checkControllerMove(); - var dOrientation = Math.abs(Quat.dot(Camera.orientation, lastOrientation) - 1); - var dPosition = Vec3.distance(Camera.position, lastPosition); - if (dOrientation > 0.001 || dPosition > 0.001) { - propertyMenu.hide(); - lastOrientation = Camera.orientation; - lastPosition = Camera.position; - } - if (lastMouseMoveEvent) { - mouseMove(lastMouseMoveEvent); - lastMouseMoveEvent = null; - } -}); - -function insideBox(center, dimensions, point) { - return (Math.abs(point.x - center.x) <= (dimensions.x / 2.0)) && - (Math.abs(point.y - center.y) <= (dimensions.y / 2.0)) && - (Math.abs(point.z - center.z) <= (dimensions.z / 2.0)); -} - -function selectAllEntitiesInCurrentSelectionBox(keepIfTouching) { - if (selectionManager.hasSelection()) { - // Get all entities touching the bounding box of the current selection - var boundingBoxCorner = Vec3.subtract(selectionManager.worldPosition, - Vec3.multiply(selectionManager.worldDimensions, 0.5)); - var entities = Entities.findEntitiesInBox(boundingBoxCorner, selectionManager.worldDimensions); - - if (!keepIfTouching) { - var isValid; - if (selectionManager.localPosition === null || selectionManager.localPosition === undefined) { - isValid = function (position) { - return insideBox(selectionManager.worldPosition, selectionManager.worldDimensions, position); - }; - } else { - isValid = function (position) { - var localPosition = Vec3.multiplyQbyV(Quat.inverse(selectionManager.localRotation), - Vec3.subtract(position, - selectionManager.localPosition)); - return insideBox(Vec3.ZERO, selectionManager.localDimensions, localPosition); - }; - } - for (var i = 0; i < entities.length; ++i) { - var properties = Entities.getEntityProperties(entities[i]); - if (!isValid(properties.position)) { - entities.splice(i, 1); - --i; - } - } - } - selectionManager.setSelections(entities, this); - } -} - -function sortSelectedEntities(selected) { - var sortedEntities = selected.slice(); - var begin = 0; - while (begin < sortedEntities.length) { - var elementRemoved = false; - var next = begin + 1; - while (next < sortedEntities.length) { - var beginID = sortedEntities[begin]; - var nextID = sortedEntities[next]; - - if (Entities.isChildOfParent(beginID, nextID)) { - sortedEntities[begin] = nextID; - sortedEntities[next] = beginID; - sortedEntities.splice(next, 1); - elementRemoved = true; - break; - } else if (Entities.isChildOfParent(nextID, beginID)) { - sortedEntities.splice(next, 1); - elementRemoved = true; - break; - } - next++; - } - if (!elementRemoved) { - begin++; - } - } - return sortedEntities; -} - -function recursiveDelete(entities, childrenList, deletedIDs, entityHostType) { - var wantDebug = false; - var entitiesLength = entities.length; - var initialPropertySets = Entities.getMultipleEntityProperties(entities); - var entityHostTypes = Entities.getMultipleEntityProperties(entities, 'entityHostType'); - for (var i = 0; i < entitiesLength; ++i) { - var entityID = entities[i]; - - if (entityHostTypes[i].entityHostType !== entityHostType) { - if (wantDebug) { - console.log("Skipping deletion of entity " + entityID + " with conflicting entityHostType: " + - entityHostTypes[i].entityHostType + ", expected: " + entityHostType); - } - continue; - } - - var children = Entities.getChildrenIDs(entityID); - var grandchildrenList = []; - recursiveDelete(children, grandchildrenList, deletedIDs, entityHostType); - childrenList.push({ - entityID: entityID, - properties: initialPropertySets[i], - children: grandchildrenList - }); - deletedIDs.push(entityID); - Entities.deleteEntity(entityID); - } -} - -function unparentSelectedEntities() { - if (SelectionManager.hasSelection()) { - var selectedEntities = selectionManager.selections; - var parentCheck = false; - - if (selectedEntities.length < 1) { - Window.notifyEditError("You must have an entity selected in order to unparent it."); - return; - } - selectedEntities.forEach(function (id, index) { - var parentId = Entities.getEntityProperties(id, ["parentID"]).parentID; - if (parentId !== null && parentId.length > 0 && parentId !== Uuid.NULL) { - parentCheck = true; - } - Entities.editEntity(id, {parentID: null}); - return true; - }); - if (parentCheck) { - if (selectedEntities.length > 1) { - Window.notify("Entities unparented"); - } else { - Window.notify("Entity unparented"); - } - } else { - if (selectedEntities.length > 1) { - Window.notify("Selected Entities have no parents"); - } else { - Window.notify("Selected Entity does not have a parent"); - } - } - } else { - Window.notifyEditError("You have nothing selected to unparent"); - } -} -function parentSelectedEntities() { - if (SelectionManager.hasSelection()) { - var selectedEntities = selectionManager.selections; - if (selectedEntities.length <= 1) { - Window.notifyEditError("You must have multiple entities selected in order to parent them"); - return; - } - var parentCheck = false; - var lastEntityId = selectedEntities[selectedEntities.length - 1]; - selectedEntities.forEach(function (id, index) { - if (lastEntityId !== id) { - var parentId = Entities.getEntityProperties(id, ["parentID"]).parentID; - if (parentId !== lastEntityId) { - parentCheck = true; - } - Entities.editEntity(id, {parentID: lastEntityId}); - } - }); - - if (parentCheck) { - Window.notify("Entities parented"); - } else { - Window.notify("Entities are already parented to last"); - } - } else { - Window.notifyEditError("You have nothing selected to parent"); - } -} -function deleteSelectedEntities() { - if (SelectionManager.hasSelection()) { - var deletedIDs = []; - - SelectionManager.saveProperties(); - var savedProperties = []; - var newSortedSelection = sortSelectedEntities(selectionManager.selections); - var entityHostTypes = Entities.getMultipleEntityProperties(newSortedSelection, 'entityHostType'); - for (var i = 0; i < newSortedSelection.length; ++i) { - var entityID = newSortedSelection[i]; - var initialProperties = SelectionManager.savedProperties[entityID]; - if (initialProperties.locked || - (initialProperties.avatarEntity && initialProperties.owningAvatarID !== MyAvatar.sessionUUID)) { - continue; - } - var children = Entities.getChildrenIDs(entityID); - var childList = []; - recursiveDelete(children, childList, deletedIDs, entityHostTypes[i].entityHostType); - savedProperties.push({ - entityID: entityID, - properties: initialProperties, - children: childList - }); - deletedIDs.push(entityID); - Entities.deleteEntity(entityID); - } - - if (savedProperties.length > 0) { - SelectionManager.clearSelections(this); - pushCommandForSelections([], savedProperties); - entityListTool.deleteEntities(deletedIDs); - } - } -} - -function toggleSelectedEntitiesLocked() { - if (SelectionManager.hasSelection()) { - var locked = !Entities.getEntityProperties(SelectionManager.selections[0], ["locked"]).locked; - for (var i = 0; i < selectionManager.selections.length; i++) { - var entityID = SelectionManager.selections[i]; - Entities.editEntity(entityID, { - locked: locked - }); - } - entityListTool.sendUpdate(); - selectionManager._update(false, this); - } -} - -function toggleSelectedEntitiesVisible() { - if (SelectionManager.hasSelection()) { - var visible = !Entities.getEntityProperties(SelectionManager.selections[0], ["visible"]).visible; - for (var i = 0; i < selectionManager.selections.length; i++) { - var entityID = SelectionManager.selections[i]; - Entities.editEntity(entityID, { - visible: visible - }); - } - entityListTool.sendUpdate(); - selectionManager._update(false, this); - } -} - -function onFileSaveChanged(filename) { - Window.saveFileChanged.disconnect(onFileSaveChanged); - if (filename !== "") { - var success = Clipboard.exportEntities(filename, selectionManager.selections); - if (!success) { - Window.notifyEditError("Export failed."); - } - } -} - -function onFileOpenChanged(filename) { - // disconnect the event, otherwise the requests will stack up - try { - // Not all calls to onFileOpenChanged() connect an event. - Window.browseChanged.disconnect(onFileOpenChanged); - } catch (e) { - // Ignore. - } - - var importURL = null; - if (filename !== "") { - importURL = filename; - if (!/^(http|https):\/\//.test(filename)) { - importURL = "file:///" + importURL; - } - } - if (importURL) { - if (!isActive && (Entities.canRez() && Entities.canRezTmp() && Entities.canRezCertified() && Entities.canRezTmpCertified())) { - toolBar.toggle(); - } - importSVO(importURL); - } -} - -function onPromptTextChanged(prompt) { - Window.promptTextChanged.disconnect(onPromptTextChanged); - if (prompt !== "") { - if (!isActive && (Entities.canRez() && Entities.canRezTmp() && Entities.canRezCertified() && Entities.canRezTmpCertified())) { - toolBar.toggle(); - } - importSVO(prompt); - } -} - -function handleMenuEvent(menuItem) { - if (menuItem === "Allow Selecting of Small Models") { - allowSmallModels = Menu.isOptionChecked("Allow Selecting of Small Models"); - } else if (menuItem === "Allow Selecting of Large Models") { - allowLargeModels = Menu.isOptionChecked("Allow Selecting of Large Models"); - } else if (menuItem === "Allow Selecting of Lights") { - Entities.setLightsArePickable(Menu.isOptionChecked("Allow Selecting of Lights")); - } else if (menuItem === "Delete") { - deleteSelectedEntities(); - } else if (menuItem === "Undo") { - undoHistory.undo(); - } else if (menuItem === "Redo") { - undoHistory.redo(); - } else if (menuItem === "Parent Entity to Last") { - parentSelectedEntities(); - } else if (menuItem === "Unparent Entity") { - unparentSelectedEntities(); - } else if (menuItem === "Export Entities") { - if (!selectionManager.hasSelection()) { - Window.notifyEditError("No entities have been selected."); - } else { - Window.saveFileChanged.connect(onFileSaveChanged); - Window.saveAsync("Select Where to Save", "", "*.json"); - } - } else if (menuItem === "Import Entities" || menuItem === "Import Entities from URL") { - if (menuItem === "Import Entities") { - Window.browseChanged.connect(onFileOpenChanged); - Window.browseAsync("Select Model to Import", "", "*.json"); - } else { - Window.promptTextChanged.connect(onPromptTextChanged); - Window.promptAsync("URL of SVO to import", ""); - } - } else if (menuItem === "Select All Entities In Box") { - selectAllEntitiesInCurrentSelectionBox(false); - } else if (menuItem === "Select All Entities Touching Box") { - selectAllEntitiesInCurrentSelectionBox(true); - } else if (menuItem === MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE) { - entityIconOverlayManager.setVisible(isActive && Menu.isOptionChecked(MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE)); - } else if (menuItem === MENU_SHOW_ZONES_IN_EDIT_MODE) { - Entities.setDrawZoneBoundaries(isActive && Menu.isOptionChecked(MENU_SHOW_ZONES_IN_EDIT_MODE)); - } else if (menuItem === MENU_CREATE_ENTITIES_GRABBABLE) { - Settings.setValue(SETTING_EDIT_PREFIX + menuItem, Menu.isOptionChecked(menuItem)); - } - tooltip.show(false); -} - -var HALF_TREE_SCALE = 16384; - -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 + delta)); - } else { - position = Vec3.sum(MyAvatar.position, Vec3.multiply(Quat.getForward(MyAvatar.orientation), CREATE_DISTANCE + delta)); - } - - if (position.x > HALF_TREE_SCALE || position.y > HALF_TREE_SCALE || position.z > HALF_TREE_SCALE) { - return null; - } - return position; -} - -function importSVO(importURL) { - if (!Entities.canRez() && !Entities.canRezTmp() && - !Entities.canRezCertified() && !Entities.canRezTmpCertified()) { - Window.notifyEditError(INSUFFICIENT_PERMISSIONS_IMPORT_ERROR_MSG); - return; - } - - Overlays.editOverlay(importingSVOTextOverlay, { - visible: true - }); - Overlays.editOverlay(importingSVOImageOverlay, { - visible: true - }); - - var success = Clipboard.importEntities(importURL); - - if (success) { - var VERY_LARGE = 10000; - var isLargeImport = Clipboard.getClipboardContentsLargestDimension() >= VERY_LARGE; - var position = Vec3.ZERO; - if (!isLargeImport) { - position = getPositionToCreateEntity(Clipboard.getClipboardContentsLargestDimension() / 2); - } - 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 deltaPosition = Vec3.ZERO; - var entityPositions = []; - var entityParentIDs = []; - - var propType = Entities.getEntityProperties(pastedEntityIDs[0], ["type"]).type; - var NO_ADJUST_ENTITY_TYPES = ["Zone", "Light", "ParticleEffect"]; - if (NO_ADJUST_ENTITY_TYPES.indexOf(propType) === -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. - for (var i = 0, length = pastedEntityIDs.length; i < length; i++) { - var curLoopEntityProps = Entities.getEntityProperties(pastedEntityIDs[i], ["position", "dimensions", - "registrationPoint", "rotation", "parentID"]); - var adjustedPosition = adjustPositionPerBoundingBox(targetPosition, targetDirection, - curLoopEntityProps.registrationPoint, curLoopEntityProps.dimensions, curLoopEntityProps.rotation); - var delta = Vec3.subtract(adjustedPosition, curLoopEntityProps.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] = curLoopEntityProps.position; - entityParentIDs[i] = curLoopEntityProps.parentID; - } - deltaPerpendicular = Vec3.multiply(1 / pastedEntityIDs.length, deltaPerpendicular); - deltaPosition = Vec3.sum(Vec3.multiply(deltaParallel, targetDirection), deltaPerpendicular); - } - - if (grid.getSnapToGrid()) { - var firstEntityProps = Entities.getEntityProperties(pastedEntityIDs[0], ["position", "dimensions", - "registrationPoint"]); - var positionPreSnap = Vec3.sum(deltaPosition, firstEntityProps.position); - position = grid.snapToSurface(grid.snapToGrid(positionPreSnap, false, firstEntityProps.dimensions, - firstEntityProps.registrationPoint), firstEntityProps.dimensions, firstEntityProps.registrationPoint); - deltaPosition = Vec3.subtract(position, firstEntityProps.position); - } - - if (!Vec3.equal(deltaPosition, Vec3.ZERO)) { - for (var editEntityIndex = 0, numEntities = pastedEntityIDs.length; editEntityIndex < numEntities; editEntityIndex++) { - if (Uuid.isNull(entityParentIDs[editEntityIndex])) { - Entities.editEntity(pastedEntityIDs[editEntityIndex], { - position: Vec3.sum(deltaPosition, entityPositions[editEntityIndex]) - }); - } - } - } - } - - if (isActive) { - selectionManager.setSelections(pastedEntityIDs, this); - } - } else { - Window.notifyEditError("Can't import entities: entities would be out of bounds."); - } - } else { - Window.notifyEditError("There was an error importing the entity file."); - } - - Overlays.editOverlay(importingSVOTextOverlay, { - visible: false - }); - Overlays.editOverlay(importingSVOImageOverlay, { - visible: false - }); -} -Window.svoImportRequested.connect(importSVO); - -Menu.menuItemEvent.connect(handleMenuEvent); - -var keyPressEvent = function (event) { - if (isActive) { - cameraManager.keyPressEvent(event); - } -}; -var keyReleaseEvent = function (event) { - if (isActive) { - cameraManager.keyReleaseEvent(event); - } -}; -Controller.keyReleaseEvent.connect(keyReleaseEvent); -Controller.keyPressEvent.connect(keyPressEvent); - -function deleteKey(value) { - if (value === 0) { // on release - deleteSelectedEntities(); - } -} -function deselectKey(value) { - if (value === 0) { // on release - selectionManager.clearSelections(this); - } -} -function toggleKey(value) { - if (value === 0) { // on release - selectionDisplay.toggleSpaceMode(); - } -} -function focusKey(value) { - if (value === 0) { // on release - cameraManager.enable(); - if (selectionManager.hasSelection()) { - cameraManager.focus(selectionManager.worldPosition, selectionManager.worldDimensions, - Menu.isOptionChecked(MENU_EASE_ON_FOCUS)); - } - } -} -function gridKey(value) { - if (value === 0) { // on release - if (selectionManager.hasSelection()) { - grid.moveToSelection(); - } - } -} -function recursiveAdd(newParentID, parentData) { - if (parentData.children !== undefined) { - var children = parentData.children; - for (var i = 0; i < children.length; i++) { - var childProperties = children[i].properties; - childProperties.parentID = newParentID; - var newChildID = Entities.addEntity(childProperties); - recursiveAdd(newChildID, children[i]); - } - } -} - -var UndoHistory = function(onUpdate) { - this.history = []; - // The current position is the index of the last executed action in the history array. - // - // -1 0 1 2 3 <- position - // A B C D <- actions in history - // - // If our lastExecutedIndex is 1, the last executed action is B. - // If we undo, we undo B (index 1). If we redo, we redo C (index 2). - this.lastExecutedIndex = -1; - this.enabled = true; - this.onUpdate = onUpdate; -}; - -UndoHistory.prototype.pushCommand = function(undoFn, undoArgs, redoFn, redoArgs) { - if (!this.enabled) { - return; - } - // Delete any history following the last executed action. - this.history.splice(this.lastExecutedIndex + 1); - this.history.push({ - undoFn: undoFn, - undoArgs: undoArgs, - redoFn: redoFn, - redoArgs: redoArgs - }); - this.lastExecutedIndex++; - - if (this.onUpdate) { - this.onUpdate(); - } -}; -UndoHistory.prototype.setEnabled = function(enabled) { - this.enabled = enabled; - if (this.onUpdate) { - this.onUpdate(); - } -}; -UndoHistory.prototype.canUndo = function() { - return this.enabled && this.lastExecutedIndex >= 0; -}; -UndoHistory.prototype.canRedo = function() { - return this.enabled && this.lastExecutedIndex < this.history.length - 1; -}; -UndoHistory.prototype.undo = function() { - if (!this.canUndo()) { - console.warn("Cannot undo action"); - return; - } - - var command = this.history[this.lastExecutedIndex]; - command.undoFn(command.undoArgs); - this.lastExecutedIndex--; - - if (this.onUpdate) { - this.onUpdate(); - } -}; -UndoHistory.prototype.redo = function() { - if (!this.canRedo()) { - console.warn("Cannot redo action"); - return; - } - - var command = this.history[this.lastExecutedIndex + 1]; - command.redoFn(command.redoArgs); - this.lastExecutedIndex++; - - if (this.onUpdate) { - this.onUpdate(); - } -}; - -function updateUndoRedoMenuItems() { - Menu.setMenuEnabled("Edit > Undo", undoHistory.canUndo()); - Menu.setMenuEnabled("Edit > Redo", undoHistory.canRedo()); -} -var undoHistory = new UndoHistory(updateUndoRedoMenuItems); -updateUndoRedoMenuItems(); - -// When an entity has been deleted we need a way to "undo" this deletion. Because it's not currently -// possible to create an entity with a specific id, earlier undo commands to the deleted entity -// will fail if there isn't a way to find the new entity id. -var DELETED_ENTITY_MAP = {}; - -function applyEntityProperties(data) { - var editEntities = data.editEntities; - var createEntities = data.createEntities; - var deleteEntities = data.deleteEntities; - var selectedEntityIDs = []; - var selectEdits = createEntities.length === 0 || !data.selectCreated; - var i, entityID, entityProperties; - for (i = 0; i < createEntities.length; i++) { - entityID = createEntities[i].entityID; - entityProperties = createEntities[i].properties; - var newEntityID = Entities.addEntity(entityProperties); - recursiveAdd(newEntityID, createEntities[i]); - DELETED_ENTITY_MAP[entityID] = newEntityID; - if (data.selectCreated) { - selectedEntityIDs.push(newEntityID); - } - } - for (i = 0; i < deleteEntities.length; i++) { - entityID = deleteEntities[i].entityID; - if (DELETED_ENTITY_MAP[entityID] !== undefined) { - entityID = DELETED_ENTITY_MAP[entityID]; - } - Entities.deleteEntity(entityID); - var index = selectedEntityIDs.indexOf(entityID); - if (index >= 0) { - selectedEntityIDs.splice(index, 1); - } - } - for (i = 0; i < editEntities.length; i++) { - entityID = editEntities[i].entityID; - if (DELETED_ENTITY_MAP[entityID] !== undefined) { - entityID = DELETED_ENTITY_MAP[entityID]; - } - entityProperties = editEntities[i].properties; - if (entityProperties !== null) { - Entities.editEntity(entityID, entityProperties); - } - if (selectEdits) { - selectedEntityIDs.push(entityID); - } - } - - // We might be getting an undo while edit.js is disabled. If that is the case, don't set - // our selections, causing the edit widgets to display. - if (isActive) { - selectionManager.setSelections(selectedEntityIDs, this); - selectionManager.saveProperties(); - } -} - -// For currently selected entities, push a command to the UndoStack that uses the current entity properties for the -// redo command, and the saved properties for the undo command. Also, include create and delete entity data. -function pushCommandForSelections(createdEntityData, deletedEntityData, doNotSaveEditProperties) { - doNotSaveEditProperties = false; - var undoData = { - editEntities: [], - createEntities: deletedEntityData || [], - deleteEntities: createdEntityData || [], - selectCreated: true - }; - var redoData = { - editEntities: [], - createEntities: createdEntityData || [], - deleteEntities: deletedEntityData || [], - selectCreated: true - }; - for (var i = 0; i < SelectionManager.selections.length; i++) { - var entityID = SelectionManager.selections[i]; - var initialProperties = SelectionManager.savedProperties[entityID]; - var currentProperties = null; - if (!initialProperties) { - continue; - } - - if (doNotSaveEditProperties) { - initialProperties = null; - } else { - currentProperties = Entities.getEntityProperties(entityID); - } - - undoData.editEntities.push({ - entityID: entityID, - properties: initialProperties - }); - redoData.editEntities.push({ - entityID: entityID, - properties: currentProperties - }); - } - undoHistory.pushCommand(applyEntityProperties, undoData, applyEntityProperties, redoData); -} - -var ServerScriptStatusMonitor = function(entityID, statusCallback) { - var self = this; - - self.entityID = entityID; - self.active = true; - self.sendRequestTimerID = null; - - var onStatusReceived = function(success, isRunning, status, errorInfo) { - if (self.active) { - statusCallback({ - statusRetrieved: success, - isRunning: isRunning, - status: status, - errorInfo: errorInfo - }); - self.sendRequestTimerID = Script.setTimeout(function() { - if (self.active) { - Entities.getServerScriptStatus(entityID, onStatusReceived); - } - }, 1000); - } - }; - self.stop = function() { - self.active = false; - }; - - Entities.getServerScriptStatus(entityID, onStatusReceived); -}; - -var PropertiesTool = function (opts) { - var that = {}; - - var webView = null; - webView = Tablet.getTablet("com.highfidelity.interface.tablet.system"); - webView.setVisible = function(value) {}; - - var visible = false; - - // This keeps track of the last entity ID that was selected. If multiple entities - // are selected or if no entity is selected this will be `null`. - var currentSelectedEntityID = null; - var statusMonitor = null; - var blockPropertyUpdates = false; - - that.setVisible = function (newVisible) { - visible = newVisible; - webView.setVisible(shouldUseEditTabletApp() && visible); - createToolsWindow.setVisible(!shouldUseEditTabletApp() && visible); - }; - - that.setVisible(false); - - function emitScriptEvent(data) { - var dataString = JSON.stringify(data); - webView.emitScriptEvent(dataString); - createToolsWindow.emitScriptEvent(dataString); - } - - function updateScriptStatus(info) { - info.type = "server_script_status"; - emitScriptEvent(info); - } - - function resetScriptStatus() { - updateScriptStatus({ - statusRetrieved: undefined, - isRunning: undefined, - status: "", - errorInfo: "" - }); - } - - that.setSpaceMode = function(spaceMode) { - emitScriptEvent({ - type: 'setSpaceMode', - spaceMode: spaceMode - }) - }; - - function updateSelections(selectionUpdated, caller) { - if (blockPropertyUpdates) { - return; - } - - var data = { - type: 'update', - spaceMode: selectionDisplay.getSpaceMode(), - isPropertiesToolUpdate: caller === this, - }; - - if (selectionUpdated) { - resetScriptStatus(); - - if (selectionManager.selections.length !== 1) { - if (statusMonitor !== null) { - statusMonitor.stop(); - statusMonitor = null; - } - currentSelectedEntityID = null; - } else if (currentSelectedEntityID !== selectionManager.selections[0]) { - if (statusMonitor !== null) { - statusMonitor.stop(); - } - var entityID = selectionManager.selections[0]; - currentSelectedEntityID = entityID; - statusMonitor = new ServerScriptStatusMonitor(entityID, updateScriptStatus); - } - } - - var selections = []; - for (var i = 0; i < selectionManager.selections.length; i++) { - var entity = {}; - entity.id = selectionManager.selections[i]; - entity.properties = Entities.getEntityProperties(selectionManager.selections[i]); - if (entity.properties.rotation !== undefined) { - entity.properties.rotation = Quat.safeEulerAngles(entity.properties.rotation); - } - if (entity.properties.localRotation !== undefined) { - entity.properties.localRotation = Quat.safeEulerAngles(entity.properties.localRotation); - } - if (entity.properties.emitOrientation !== undefined) { - entity.properties.emitOrientation = Quat.safeEulerAngles(entity.properties.emitOrientation); - } - if (entity.properties.keyLight !== undefined && entity.properties.keyLight.direction !== undefined) { - entity.properties.keyLight.direction = Vec3.toPolar(entity.properties.keyLight.direction); - entity.properties.keyLight.direction.z = 0.0; - } - selections.push(entity); - } - data.selections = selections; - - emitScriptEvent(data); - } - selectionManager.addEventListener(updateSelections, this); - - - var onWebEventReceived = function(data) { - try { - data = JSON.parse(data); - } catch(e) { - return; - } - var i, properties, dY, diff, newPosition; - if (data.type === "update") { - - if (data.properties || data.propertiesMap) { - var propertiesMap = data.propertiesMap; - if (propertiesMap === undefined) { - propertiesMap = [{ - entityIDs: data.ids, - properties: data.properties, - }]; - } - - var sendListUpdate = false; - propertiesMap.forEach(function(propertiesObject) { - var properties = propertiesObject.properties; - var updateEntityIDs = propertiesObject.entityIDs; - if (properties.dynamic === false) { - // this object is leaving dynamic, so we zero its velocities - properties.localVelocity = Vec3.ZERO; - properties.localAngularVelocity = Vec3.ZERO; - } - if (properties.rotation !== undefined) { - properties.rotation = Quat.fromVec3Degrees(properties.rotation); - } - if (properties.localRotation !== undefined) { - properties.localRotation = Quat.fromVec3Degrees(properties.localRotation); - } - if (properties.emitOrientation !== undefined) { - properties.emitOrientation = Quat.fromVec3Degrees(properties.emitOrientation); - } - if (properties.keyLight !== undefined && properties.keyLight.direction !== undefined) { - var currentKeyLightDirection = Vec3.toPolar(Entities.getEntityProperties(selectionManager.selections[0], ['keyLight.direction']).keyLight.direction); - if (properties.keyLight.direction.x === undefined) { - properties.keyLight.direction.x = currentKeyLightDirection.x; - } - if (properties.keyLight.direction.y === undefined) { - properties.keyLight.direction.y = currentKeyLightDirection.y; - } - properties.keyLight.direction = Vec3.fromPolar(properties.keyLight.direction.x, properties.keyLight.direction.y); - } - - updateEntityIDs.forEach(function (entityID) { - Entities.editEntity(entityID, properties); - }); - - if (properties.name !== undefined || properties.modelURL !== undefined || properties.materialURL !== undefined || - properties.visible !== undefined || properties.locked !== undefined) { - - sendListUpdate = true; - } - - }); - if (sendListUpdate) { - entityListTool.sendUpdate(); - } - } - - - if (data.onlyUpdateEntities) { - blockPropertyUpdates = true; - } else { - pushCommandForSelections(); - SelectionManager.saveProperties(); - } - selectionManager._update(false, this); - blockPropertyUpdates = false; - } else if (data.type === 'saveUserData' || data.type === 'saveMaterialData') { - data.ids.forEach(function(entityID) { - Entities.editEntity(entityID, data.properties); - }); - } else if (data.type === "showMarketplace") { - showMarketplace(); - } else if (data.type === "action") { - if (data.action === "moveSelectionToGrid") { - if (selectionManager.hasSelection()) { - selectionManager.saveProperties(); - dY = grid.getOrigin().y - (selectionManager.worldPosition.y - selectionManager.worldDimensions.y / 2); - diff = { - x: 0, - y: dY, - z: 0 - }; - for (i = 0; i < selectionManager.selections.length; i++) { - properties = selectionManager.savedProperties[selectionManager.selections[i]]; - newPosition = Vec3.sum(properties.position, diff); - Entities.editEntity(selectionManager.selections[i], { - position: newPosition - }); - } - pushCommandForSelections(); - selectionManager._update(false, this); - } - } else if (data.action === "moveAllToGrid") { - if (selectionManager.hasSelection()) { - selectionManager.saveProperties(); - for (i = 0; i < selectionManager.selections.length; i++) { - properties = selectionManager.savedProperties[selectionManager.selections[i]]; - var bottomY = properties.boundingBox.center.y - properties.boundingBox.dimensions.y / 2; - dY = grid.getOrigin().y - bottomY; - diff = { - x: 0, - y: dY, - z: 0 - }; - newPosition = Vec3.sum(properties.position, diff); - Entities.editEntity(selectionManager.selections[i], { - position: newPosition - }); - } - pushCommandForSelections(); - selectionManager._update(false, this); - } - } else if (data.action === "resetToNaturalDimensions") { - if (selectionManager.hasSelection()) { - selectionManager.saveProperties(); - for (i = 0; i < selectionManager.selections.length; i++) { - properties = selectionManager.savedProperties[selectionManager.selections[i]]; - var naturalDimensions = properties.naturalDimensions; - - // If any of the natural dimensions are not 0, resize - if (properties.type === "Model" && naturalDimensions.x === 0 && naturalDimensions.y === 0 && - naturalDimensions.z === 0) { - Window.notifyEditError("Cannot reset entity to its natural dimensions: Model URL" + - " is invalid or the model has not yet been loaded."); - } else { - Entities.editEntity(selectionManager.selections[i], { - dimensions: properties.naturalDimensions - }); - } - } - pushCommandForSelections(); - selectionManager._update(false, this); - } - } else if (data.action === "previewCamera") { - if (selectionManager.hasSelection()) { - Camera.mode = "entity"; - Camera.cameraEntity = selectionManager.selections[0]; - } - } else if (data.action === "rescaleDimensions") { - var multiplier = data.percentage / 100.0; - if (selectionManager.hasSelection()) { - selectionManager.saveProperties(); - for (i = 0; i < selectionManager.selections.length; i++) { - properties = selectionManager.savedProperties[selectionManager.selections[i]]; - Entities.editEntity(selectionManager.selections[i], { - dimensions: Vec3.multiply(multiplier, properties.dimensions) - }); - } - pushCommandForSelections(); - selectionManager._update(false, this); - } - } else if (data.action === "reloadClientScripts") { - if (selectionManager.hasSelection()) { - var timestamp = Date.now(); - for (i = 0; i < selectionManager.selections.length; i++) { - Entities.editEntity(selectionManager.selections[i], { - scriptTimestamp: timestamp - }); - } - } - } else if (data.action === "reloadServerScripts") { - if (selectionManager.hasSelection()) { - for (i = 0; i < selectionManager.selections.length; i++) { - Entities.reloadServerScripts(selectionManager.selections[i]); - } - } - } - } else if (data.type === "propertiesPageReady") { - updateSelections(true); - } else if (data.type === "tooltipsRequest") { - emitScriptEvent({ - type: 'tooltipsReply', - tooltips: Script.require('./assets/data/createAppTooltips.json'), - hmdActive: HMD.active, - }); - } else if (data.type === "propertyRangeRequest") { - var propertyRanges = {}; - data.properties.forEach(function (property) { - propertyRanges[property] = Entities.getPropertyInfo(property); - }); - emitScriptEvent({ - type: 'propertyRangeReply', - propertyRanges: propertyRanges, - }); - } else if (data.type === "materialTargetRequest") { - var parentModelData; - var properties = Entities.getEntityProperties(data.entityID, ["type", "parentID"]); - if (properties.type === "Material" && properties.parentID !== Uuid.NULL) { - var parentType = Entities.getEntityProperties(properties.parentID, ["type"]).type; - if (parentType === "Model" || Entities.getNestableType(properties.parentID) === "avatar") { - parentModelData = Graphics.getModel(properties.parentID); - } else if (parentType === "Shape" || parentType === "Box" || parentType === "Sphere") { - parentModelData = {}; - parentModelData.numMeshes = 1; - parentModelData.materialNames = []; - } - } - emitScriptEvent({ - type: 'materialTargetReply', - entityID: data.entityID, - materialTargetData: parentModelData, - }); - } - }; - - HMD.displayModeChanged.connect(function() { - emitScriptEvent({ - type: 'hmdActiveChanged', - hmdActive: HMD.active, - }); - }); - - createToolsWindow.webEventReceived.addListener(this, onWebEventReceived); - - webView.webEventReceived.connect(this, onWebEventReceived); - - return that; -}; - - -var PopupMenu = function () { - var self = this; - - var MENU_ITEM_HEIGHT = 21; - var MENU_ITEM_SPACING = 1; - var TEXT_MARGIN = 7; - - var overlays = []; - var overlayInfo = {}; - - var visible = false; - - var upColor = { - red: 0, - green: 0, - blue: 0 - }; - var downColor = { - red: 192, - green: 192, - blue: 192 - }; - var overColor = { - red: 128, - green: 128, - blue: 128 - }; - - self.onSelectMenuItem = function () {}; - - self.addMenuItem = function (name) { - var id = Overlays.addOverlay("text", { - text: name, - backgroundAlpha: 1.0, - backgroundColor: upColor, - topMargin: TEXT_MARGIN, - leftMargin: TEXT_MARGIN, - width: 210, - height: MENU_ITEM_HEIGHT, - font: { - size: 12 - }, - visible: false - }); - overlays.push(id); - overlayInfo[id] = { - name: name - }; - return id; - }; - - self.updateMenuItemText = function (id, newText) { - Overlays.editOverlay(id, { - text: newText - }); - }; - - self.setPosition = function (x, y) { - for (var key in overlayInfo) { - Overlays.editOverlay(key, { - x: x, - y: y - }); - y += MENU_ITEM_HEIGHT + MENU_ITEM_SPACING; - } - }; - - self.onSelected = function () {}; - - var pressingOverlay = null; - var hoveringOverlay = null; - - self.mousePressEvent = function (event) { - if (event.isLeftButton) { - var overlay = Overlays.getOverlayAtPoint({ - x: event.x, - y: event.y - }); - if (overlay in overlayInfo) { - pressingOverlay = overlay; - Overlays.editOverlay(pressingOverlay, { - backgroundColor: downColor - }); - } else { - self.hide(); - } - return false; - } - }; - self.mouseMoveEvent = function (event) { - if (visible) { - var overlay = Overlays.getOverlayAtPoint({ - x: event.x, - y: event.y - }); - if (!pressingOverlay) { - if (hoveringOverlay !== null && overlay !== hoveringOverlay) { - Overlays.editOverlay(hoveringOverlay, { - backgroundColor: upColor - }); - hoveringOverlay = null; - } - if (overlay !== hoveringOverlay && overlay in overlayInfo) { - Overlays.editOverlay(overlay, { - backgroundColor: overColor - }); - hoveringOverlay = overlay; - } - } - } - return false; - }; - self.mouseReleaseEvent = function (event) { - var overlay = Overlays.getOverlayAtPoint({ - x: event.x, - y: event.y - }); - if (pressingOverlay !== null && pressingOverlay !== undefined) { - if (overlay === pressingOverlay) { - self.onSelectMenuItem(overlayInfo[overlay].name); - } - Overlays.editOverlay(pressingOverlay, { - backgroundColor: upColor - }); - pressingOverlay = null; - self.hide(); - } - }; - - self.setVisible = function (newVisible) { - if (newVisible !== visible) { - visible = newVisible; - for (var key in overlayInfo) { - Overlays.editOverlay(key, { - visible: newVisible - }); - } - } - }; - self.show = function () { - self.setVisible(true); - }; - self.hide = function () { - self.setVisible(false); - }; - - function cleanup() { - ContextOverlay.enabled = true; - for (var i = 0; i < overlays.length; i++) { - Overlays.deleteOverlay(overlays[i]); - } - Controller.mousePressEvent.disconnect(self.mousePressEvent); - Controller.mouseMoveEvent.disconnect(self.mouseMoveEvent); - Controller.mouseReleaseEvent.disconnect(self.mouseReleaseEvent); - - Entities.canRezChanged.disconnect(checkEditPermissionsAndUpdate); - Entities.canRezTmpChanged.disconnect(checkEditPermissionsAndUpdate); - Entities.canRezCertifiedChanged.disconnect(checkEditPermissionsAndUpdate); - Entities.canRezTmpCertifiedChanged.disconnect(checkEditPermissionsAndUpdate); - } - - Controller.mousePressEvent.connect(self.mousePressEvent); - Controller.mouseMoveEvent.connect(self.mouseMoveEvent); - Controller.mouseReleaseEvent.connect(self.mouseReleaseEvent); - Script.scriptEnding.connect(cleanup); - - return this; -}; - -function whenPressed(fn) { - return function(value) { - if (value > 0) { - fn(); - } - }; -} - -function whenReleased(fn) { - return function(value) { - if (value === 0) { - fn(); - } - }; -} - -var isOnMacPlatform = Controller.getValue(Controller.Hardware.Application.PlatformMac); - -var mapping = Controller.newMapping(CONTROLLER_MAPPING_NAME); -if (isOnMacPlatform) { - mapping.from([Controller.Hardware.Keyboard.Backspace]).to(deleteKey); -} else { - mapping.from([Controller.Hardware.Keyboard.Delete]).to(deleteKey); -} -mapping.from([Controller.Hardware.Keyboard.T]).to(toggleKey); -mapping.from([Controller.Hardware.Keyboard.F]).to(focusKey); -mapping.from([Controller.Hardware.Keyboard.G]).to(gridKey); -mapping.from([Controller.Hardware.Keyboard.X]) - .when([Controller.Hardware.Keyboard.Control]) - .to(whenReleased(function() { selectionManager.cutSelectedEntities() })); -mapping.from([Controller.Hardware.Keyboard.C]) - .when([Controller.Hardware.Keyboard.Control]) - .to(whenReleased(function() { selectionManager.copySelectedEntities() })); -mapping.from([Controller.Hardware.Keyboard.V]) - .when([Controller.Hardware.Keyboard.Control]) - .to(whenReleased(function() { selectionManager.pasteEntities() })); -mapping.from([Controller.Hardware.Keyboard.D]) - .when([Controller.Hardware.Keyboard.Control]) - .to(whenReleased(function() { selectionManager.duplicateSelection() })); - -// Bind undo to ctrl-shift-z to maintain backwards-compatibility -mapping.from([Controller.Hardware.Keyboard.Z]) - .when([Controller.Hardware.Keyboard.Control, Controller.Hardware.Keyboard.Shift]) - .to(whenPressed(function() { undoHistory.redo() })); - - -mapping.from([Controller.Hardware.Keyboard.P]) - .when([Controller.Hardware.Keyboard.Control, Controller.Hardware.Keyboard.Shift]) - .to(whenReleased(function() { unparentSelectedEntities(); })); - -mapping.from([Controller.Hardware.Keyboard.P]) - .when([Controller.Hardware.Keyboard.Control, !Controller.Hardware.Keyboard.Shift]) - .to(whenReleased(function() { parentSelectedEntities(); })); - -keyUpEventFromUIWindow = function(keyUpEvent) { - var WANT_DEBUG_MISSING_SHORTCUTS = false; - - var pressedValue = 0.0; - - if ((!isOnMacPlatform && keyUpEvent.keyCodeString === "Delete") - || (isOnMacPlatform && keyUpEvent.keyCodeString === "Backspace")) { - - deleteKey(pressedValue); - } else if (keyUpEvent.keyCodeString === "T") { - toggleKey(pressedValue); - } else if (keyUpEvent.keyCodeString === "F") { - focusKey(pressedValue); - } else if (keyUpEvent.keyCodeString === "G") { - gridKey(pressedValue); - } else if (keyUpEvent.controlKey && keyUpEvent.keyCodeString === "X") { - selectionManager.cutSelectedEntities(); - } else if (keyUpEvent.controlKey && keyUpEvent.keyCodeString === "C") { - selectionManager.copySelectedEntities(); - } else if (keyUpEvent.controlKey && keyUpEvent.keyCodeString === "V") { - selectionManager.pasteEntities(); - } else if (keyUpEvent.controlKey && keyUpEvent.keyCodeString === "D") { - selectionManager.duplicateSelection(); - } else if (!isOnMacPlatform && keyUpEvent.controlKey && !keyUpEvent.shiftKey && keyUpEvent.keyCodeString === "Z") { - undoHistory.undo(); // undo is only handled via handleMenuItem on Mac - } else if (keyUpEvent.controlKey && !keyUpEvent.shiftKey && keyUpEvent.keyCodeString === "P") { - parentSelectedEntities(); - } else if (keyUpEvent.controlKey && keyUpEvent.shiftKey && keyUpEvent.keyCodeString === "P") { - unparentSelectedEntities(); - } else if (!isOnMacPlatform && - ((keyUpEvent.controlKey && keyUpEvent.shiftKey && keyUpEvent.keyCodeString === "Z") || - (keyUpEvent.controlKey && keyUpEvent.keyCodeString === "Y"))) { - undoHistory.redo(); // redo is only handled via handleMenuItem on Mac - } else if (WANT_DEBUG_MISSING_SHORTCUTS) { - console.warn("unhandled key event: " + JSON.stringify(keyUpEvent)) - } -}; - -var propertyMenu = new PopupMenu(); - -propertyMenu.onSelectMenuItem = function (name) { - - if (propertyMenu.marketplaceID) { - showMarketplace(propertyMenu.marketplaceID); - } -}; - -var showMenuItem = propertyMenu.addMenuItem("Show in Marketplace"); - -var propertiesTool = new PropertiesTool(); - -selectionDisplay.onSpaceModeChange = function(spaceMode) { - entityListTool.setSpaceMode(spaceMode); - propertiesTool.setSpaceMode(spaceMode); -}; - -}()); // END LOCAL_SCOPE - +// edit.js +// +// Created by Brad Hefta-Gaub on 10/2/14. +// Persist toolbar by HRS 6/11/15. +// Copyright 2014 High Fidelity, Inc. +// Copyright 2020 Vircadia contributors. +// +// This script allows you to edit entities with a new UI/UX for mouse and trackpad based editing +// +// 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, 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, OverlaySystemWindow, + keyUpEventFromUIWindow:true */ + +(function() { // BEGIN LOCAL_SCOPE + +"use strict"; + +var EDIT_TOGGLE_BUTTON = "com.highfidelity.interface.system.editButton"; + +var CONTROLLER_MAPPING_NAME = "com.highfidelity.editMode"; + +Script.include([ + "../libraries/stringHelpers.js", + "../libraries/dataViewHelpers.js", + "../libraries/progressDialog.js", + "../libraries/ToolTip.js", + "../libraries/entityCameraTool.js", + "../libraries/utils.js", + "../libraries/entityIconOverlayManager.js", + "../libraries/gridTool.js", + "entityList/entityList.js", + "entitySelectionTool/entitySelectionTool.js" +]); + +var CreateWindow = Script.require('./modules/createWindow.js'); + +var TITLE_OFFSET = 60; +var CREATE_TOOLS_WIDTH = 490; +var MAX_DEFAULT_ENTITY_LIST_HEIGHT = 942; + +var DEFAULT_IMAGE = "https://hifi-content.s3.amazonaws.com/DomainContent/production/no-image.jpg"; + +var createToolsWindow = new CreateWindow( + Script.resolvePath("qml/EditTools.qml"), + 'Create Tools', + 'com.highfidelity.create.createToolsWindow', + function () { + var windowHeight = Window.innerHeight - TITLE_OFFSET; + if (windowHeight > MAX_DEFAULT_ENTITY_LIST_HEIGHT) { + windowHeight = MAX_DEFAULT_ENTITY_LIST_HEIGHT; + } + return { + size: { + x: CREATE_TOOLS_WIDTH, + y: windowHeight + }, + position: { + x: Window.x + Window.innerWidth - CREATE_TOOLS_WIDTH, + y: Window.y + TITLE_OFFSET + } + } + }, + false +); + +/** + * @description Returns true in case we should use the tablet version of the CreateApp + * @returns boolean + */ +var shouldUseEditTabletApp = function() { + return HMD.active || (!HMD.active && !Settings.getValue("desktopTabletBecomesToolbar", true)); +}; + + +var selectionDisplay = SelectionDisplay; +var selectionManager = SelectionManager; + +var PARTICLE_SYSTEM_URL = Script.resolvePath("assets/images/icon-particles.svg"); +var POINT_LIGHT_URL = Script.resolvePath("assets/images/icon-point-light.svg"); +var SPOT_LIGHT_URL = Script.resolvePath("assets/images/icon-spot-light.svg"); +var ZONE_URL = Script.resolvePath("assets/images/icon-zone.svg"); + +var entityIconOverlayManager = new EntityIconOverlayManager(['Light', 'ParticleEffect', 'Zone'], function(entityID) { + var properties = Entities.getEntityProperties(entityID, ['type', 'isSpotlight']); + if (properties.type === 'Light') { + return { + url: properties.isSpotlight ? SPOT_LIGHT_URL : POINT_LIGHT_URL, + }; + } else if (properties.type === 'Zone') { + return { + url: ZONE_URL, + }; + } else { + return { + url: PARTICLE_SYSTEM_URL, + }; + } +}); + +var cameraManager = new CameraManager(); + +var grid = new Grid(); +var gridTool = new GridTool({ + horizontalGrid: grid, + createToolsWindow: createToolsWindow, + shouldUseEditTabletApp: shouldUseEditTabletApp +}); +gridTool.setVisible(false); + +var EntityShapeVisualizer = Script.require('./modules/entityShapeVisualizer.js'); +var entityShapeVisualizer = new EntityShapeVisualizer(["Zone"]); + +var entityListTool = new EntityListTool(shouldUseEditTabletApp); + +selectionManager.addEventListener(function () { + selectionDisplay.updateHandles(); + entityIconOverlayManager.updatePositions(); + entityShapeVisualizer.setEntities(selectionManager.selections); +}); + +var DEGREES_TO_RADIANS = Math.PI / 180.0; +var RADIANS_TO_DEGREES = 180.0 / Math.PI; + +var MIN_ANGULAR_SIZE = 2; +var MAX_ANGULAR_SIZE = 45; +var allowLargeModels = true; +var allowSmallModels = true; + +var DEFAULT_DIMENSION = 0.20; + +var DEFAULT_DIMENSIONS = { + x: DEFAULT_DIMENSION, + y: DEFAULT_DIMENSION, + z: DEFAULT_DIMENSION +}; + +var DEFAULT_LIGHT_DIMENSIONS = Vec3.multiply(20, DEFAULT_DIMENSIONS); + +var MENU_AUTO_FOCUS_ON_SELECT = "Auto Focus on Select"; +var MENU_EASE_ON_FOCUS = "Ease Orientation on Focus"; +var MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE = "Show Lights and Particle Systems in Create Mode"; +var MENU_SHOW_ZONES_IN_EDIT_MODE = "Show Zones in Create Mode"; + +var MENU_CREATE_ENTITIES_GRABBABLE = "Create Entities As Grabbable (except Zones, Particles, and Lights)"; +var MENU_ALLOW_SELECTION_LARGE = "Allow Selecting of Large Models"; +var MENU_ALLOW_SELECTION_SMALL = "Allow Selecting of Small Models"; +var MENU_ALLOW_SELECTION_LIGHTS = "Allow Selecting of Lights"; + +var SETTING_AUTO_FOCUS_ON_SELECT = "autoFocusOnSelect"; +var SETTING_EASE_ON_FOCUS = "cameraEaseOnFocus"; +var SETTING_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE = "showLightsAndParticlesInEditMode"; +var SETTING_SHOW_ZONES_IN_EDIT_MODE = "showZonesInEditMode"; + +var SETTING_EDIT_PREFIX = "Edit/"; + + +var CREATE_ENABLED_ICON = "icons/tablet-icons/edit-i.svg"; +var CREATE_DISABLED_ICON = "icons/tablet-icons/edit-disabled.svg"; + +// marketplace info, etc. not quite ready yet. +var SHOULD_SHOW_PROPERTY_MENU = false; +var INSUFFICIENT_PERMISSIONS_ERROR_MSG = "You do not have the necessary permissions to edit on this domain."; +var INSUFFICIENT_PERMISSIONS_IMPORT_ERROR_MSG = "You do not have the necessary permissions to place items on this domain."; + +var isActive = false; +var createButton = null; + +var IMPORTING_SVO_OVERLAY_WIDTH = 144; +var IMPORTING_SVO_OVERLAY_HEIGHT = 30; +var IMPORTING_SVO_OVERLAY_MARGIN = 5; +var IMPORTING_SVO_OVERLAY_LEFT_MARGIN = 34; +var importingSVOImageOverlay = Overlays.addOverlay("image", { + imageURL: Script.resolvePath("assets/images/hourglass.svg"), + width: 20, + height: 20, + alpha: 1.0, + x: Window.innerWidth - IMPORTING_SVO_OVERLAY_WIDTH, + y: Window.innerHeight - IMPORTING_SVO_OVERLAY_HEIGHT, + visible: false +}); +var importingSVOTextOverlay = Overlays.addOverlay("text", { + font: { + size: 14 + }, + text: "Importing SVO...", + leftMargin: IMPORTING_SVO_OVERLAY_LEFT_MARGIN, + x: Window.innerWidth - IMPORTING_SVO_OVERLAY_WIDTH - IMPORTING_SVO_OVERLAY_MARGIN, + y: Window.innerHeight - IMPORTING_SVO_OVERLAY_HEIGHT - IMPORTING_SVO_OVERLAY_MARGIN, + width: IMPORTING_SVO_OVERLAY_WIDTH, + height: IMPORTING_SVO_OVERLAY_HEIGHT, + backgroundColor: { + red: 80, + green: 80, + blue: 80 + }, + backgroundAlpha: 0.7, + visible: false +}); + +var MARKETPLACE_URL = Account.metaverseServerURL + "/marketplace"; +var marketplaceWindow = new OverlayWebWindow({ + title: 'Marketplace', + source: "about:blank", + width: 900, + height: 700, + visible: false +}); + +function showMarketplace(marketplaceID) { + var url = MARKETPLACE_URL; + if (marketplaceID) { + url = url + "/items/" + marketplaceID; + } + marketplaceWindow.setURL(url); + marketplaceWindow.setVisible(true); + marketplaceWindow.raise(); + + UserActivityLogger.logAction("opened_marketplace"); +} + +function hideMarketplace() { + marketplaceWindow.setVisible(false); + marketplaceWindow.setURL("about:blank"); +} + +// function toggleMarketplace() { +// if (marketplaceWindow.visible) { +// hideMarketplace(); +// } else { +// showMarketplace(); +// } +// } + +function adjustPositionPerBoundingBox(position, direction, registration, dimensions, orientation) { + // Adjust the position such that the bounding box (registration, dimensions 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 GRABBABLE_ENTITIES_MENU_CATEGORY = "Edit"; + +// Handles any edit mode updates required when domains have switched +function checkEditPermissionsAndUpdate() { + if ((createButton === null) || (createButton === undefined)) { + //--EARLY EXIT--( nothing to safely update ) + return; + } + + var hasRezPermissions = (Entities.canRez() || Entities.canRezTmp() || Entities.canRezCertified() || Entities.canRezTmpCertified()); + createButton.editProperties({ + icon: (hasRezPermissions ? CREATE_ENABLED_ICON : CREATE_DISABLED_ICON), + captionColor: (hasRezPermissions ? "#ffffff" : "#888888"), + }); + + if (!hasRezPermissions && isActive) { + that.setActive(false); + tablet.gotoHomeScreen(); + } +} + +// Copies the properties in `b` into `a`. `a` will be modified. +function copyProperties(a, b) { + for (var key in b) { + a[key] = b[key]; + } + return a; +} + +const DEFAULT_DYNAMIC_PROPERTIES = { + dynamic: true, + damping: 0.39347, + angularDamping: 0.39347, + gravity: { x: 0, y: -9.8, z: 0 }, +}; + +const DEFAULT_NON_DYNAMIC_PROPERTIES = { + dynamic: false, + damping: 0, + angularDamping: 0, + gravity: { x: 0, y: 0, z: 0 }, +}; + +const DEFAULT_ENTITY_PROPERTIES = { + All: { + description: "", + rotation: { x: 0, y: 0, z: 0, w: 1 }, + collidesWith: "static,dynamic,kinematic,otherAvatar,myAvatar", + collisionSoundURL: "", + cloneable: false, + ignoreIK: true, + canCastShadow: true, + href: "", + script: "", + serverScripts:"", + velocity: { + x: 0, + y: 0, + z: 0 + }, + angularVelocity: { + x: 0, + y: 0, + z: 0 + }, + restitution: 0.5, + friction: 0.5, + density: 1000, + dynamic: false, + }, + Shape: { + shape: "Box", + dimensions: { x: 0.2, y: 0.2, z: 0.2 }, + color: { red: 0, green: 180, blue: 239 }, + }, + Text: { + text: "Text", + dimensions: { + x: 0.65, + y: 0.3, + z: 0.01 + }, + textColor: { red: 255, green: 255, blue: 255 }, + backgroundColor: { red: 0, green: 0, blue: 0 }, + lineHeight: 0.06, + faceCamera: false, + }, + Zone: { + dimensions: { + x: 10, + y: 10, + z: 10 + }, + flyingAllowed: true, + ghostingAllowed: true, + filter: "", + keyLightMode: "inherit", + keyLightColor: { red: 255, green: 255, blue: 255 }, + keyLight: { + intensity: 1.0, + direction: { + x: 0.0, + y: -0.707106769084930, // 45 degrees + z: 0.7071067690849304 + }, + castShadows: true + }, + ambientLightMode: "inherit", + ambientLight: { + ambientIntensity: 0.5, + ambientURL: "" + }, + hazeMode: "inherit", + haze: { + hazeRange: 1000, + hazeAltitudeEffect: false, + hazeBaseRef: 0, + hazeColor: { + red: 128, + green: 154, + blue: 179 + }, + hazeBackgroundBlend: 0, + hazeEnableGlare: false, + hazeGlareColor: { + red: 255, + green: 229, + blue: 179 + }, + }, + shapeType: "box", + bloomMode: "inherit", + avatarPriority: "inherit", + screenshare: "inherit", + }, + Model: { + collisionShape: "none", + compoundShapeURL: "", + animation: { + url: "", + running: false, + allowTranslation: false, + loop: true, + hold: false, + currentFrame: 0, + firstFrame: 0, + lastFrame: 100000, + fps: 30.0, + } + }, + Image: { + dimensions: { + x: 0.5385, + y: 0.2819, + z: 0.0092 + }, + shapeType: "box", + collisionless: true, + keepAspectRatio: false, + imageURL: DEFAULT_IMAGE + }, + Web: { + dimensions: { + x: 1.6, + y: 0.9, + z: 0.01 + }, + sourceUrl: "https://projectathena.io/", + dpi: 30, + }, + ParticleEffect: { + lifespan: 1.5, + maxParticles: 10, + textures: "https://content.highfidelity.com/DomainContent/production/Particles/wispy-smoke.png", + emitRate: 5.5, + emitSpeed: 0, + speedSpread: 0, + emitDimensions: { x: 0, y: 0, z: 0 }, + emitOrientation: { x: 0, y: 0, z: 0, w: 1 }, + emitterShouldTrail: true, + particleRadius: 0.25, + radiusStart: 0, + radiusSpread: 0, + particleColor: { + red: 255, + green: 255, + blue: 255 + }, + colorSpread: { + red: 0, + green: 0, + blue: 0 + }, + alpha: 0, + alphaStart: 1, + alphaSpread: 0, + emitAcceleration: { + x: 0, + y: 2.5, + z: 0 + }, + accelerationSpread: { + x: 0, + y: 0, + z: 0 + }, + particleSpin: 0, + spinSpread: 0, + rotateWithEntity: false, + polarStart: 0, + polarFinish: Math.PI, + azimuthStart: -Math.PI, + azimuthFinish: Math.PI + }, + Light: { + color: { red: 255, green: 255, blue: 255 }, + intensity: 5.0, + dimensions: DEFAULT_LIGHT_DIMENSIONS, + falloffRadius: 1.0, + isSpotlight: false, + exponent: 1.0, + cutoff: 75.0, + }, +}; + +var toolBar = (function () { + var EDIT_SETTING = "io.highfidelity.isEditing"; // for communication with other scripts + var that = {}, + toolBar, + activeButton = null, + systemToolbar = null, + dialogWindow = null, + tablet = null; + + function createNewEntity(requestedProperties) { + var dimensions = requestedProperties.dimensions ? requestedProperties.dimensions : DEFAULT_DIMENSIONS; + var position = getPositionToCreateEntity(); + var entityID = null; + + var properties = {}; + + copyProperties(properties, DEFAULT_ENTITY_PROPERTIES.All); + + var type = requestedProperties.type; + if (type === "Box" || type === "Sphere") { + copyProperties(properties, DEFAULT_ENTITY_PROPERTIES.Shape); + } else { + copyProperties(properties, DEFAULT_ENTITY_PROPERTIES[type]); + } + + // We apply the requested properties first so that they take priority over any default properties. + copyProperties(properties, requestedProperties); + + if (properties.dynamic) { + copyProperties(properties, DEFAULT_DYNAMIC_PROPERTIES); + } else { + copyProperties(properties, DEFAULT_NON_DYNAMIC_PROPERTIES); + } + + + if (position !== null && position !== undefined) { + 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", "Image", "Web", "Material"]; + 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 }; + registration = DEFAULT_REGISTRATION; + } + + var orientation = properties.orientation; + if (orientation === undefined) { + properties.orientation = MyAvatar.orientation; + var DEFAULT_ORIENTATION = properties.orientation; + orientation = DEFAULT_ORIENTATION; + } else { + // If the orientation is already defined, we perform the corresponding rotation assuming that + // our start referential is the avatar referential. + properties.orientation = Quat.multiply(MyAvatar.orientation, properties.orientation); + var DEFAULT_ORIENTATION = properties.orientation; + orientation = DEFAULT_ORIENTATION; + } + + position = adjustPositionPerBoundingBox(position, direction, registration, dimensions, orientation); + } + + position = grid.snapToSurface(grid.snapToGrid(position, false, dimensions), dimensions); + properties.position = position; + + if (!properties.grab) { + properties.grab = {}; + if (Menu.isOptionChecked(MENU_CREATE_ENTITIES_GRABBABLE) && + !(properties.type === "Zone" || properties.type === "Light" || properties.type === "ParticleEffect" || properties.type === "Web")) { + properties.grab.grabbable = true; + } else { + properties.grab.grabbable = false; + } + } + + if (type === "Model") { + properties.visible = false; + } + + entityID = Entities.addEntity(properties); + + var dimensionsCheckCallback = function(){ + 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", "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(false, this); + } else if (dimensionsCheckCount < MAX_DIMENSIONS_CHECKS) { + Script.setTimeout(dimensionsCheckFunction, DIMENSIONS_CHECK_INTERVAL); + } + }; + Script.setTimeout(dimensionsCheckFunction, DIMENSIONS_CHECK_INTERVAL); + } + } + // Make sure the entity is loaded before we try to figure out + // its dimensions. + var MAX_LOADED_CHECKS = 10; + var LOADED_CHECK_INTERVAL = 100; + var isLoadedCheckCount = 0; + var entityIsLoadedCheck = function() { + isLoadedCheckCount++; + if (isLoadedCheckCount === MAX_LOADED_CHECKS || Entities.isLoaded(entityID)) { + var naturalDimensions = Entities.getEntityProperties(entityID, "naturalDimensions").naturalDimensions + Entities.editEntity(entityID, { + visible: true, + dimensions: naturalDimensions + }) + dimensionsCheckCallback(); + return; + } + Script.setTimeout(entityIsLoadedCheck, LOADED_CHECK_INTERVAL); + } + Script.setTimeout(entityIsLoadedCheck, LOADED_CHECK_INTERVAL); + + SelectionManager.addEntity(entityID, false, this); + SelectionManager.saveProperties(); + pushCommandForSelections([{ + entityID: entityID, + properties: properties + }], [], true); + + } else { + Window.notifyEditError("Can't create " + properties.type + ": " + + properties.type + " would be out of bounds."); + } + + selectionManager.clearSelections(this); + entityListTool.sendUpdate(); + selectionManager.setSelections([entityID], this); + + Window.setFocus(); + + return entityID; + } + + function closeExistingDialogWindow() { + if (dialogWindow) { + dialogWindow.close(); + dialogWindow = null; + } + } + + function cleanup() { + that.setActive(false); + if (tablet) { + tablet.removeButton(activeButton); + } + if (systemToolbar) { + systemToolbar.removeButton(EDIT_TOGGLE_BUTTON); + } + } + + var buttonHandlers = {}; // only used to tablet mode + + function addButton(name, handler) { + buttonHandlers[name] = handler; + } + + var SHAPE_TYPE_NONE = 0; + var SHAPE_TYPE_SIMPLE_HULL = 1; + var SHAPE_TYPE_SIMPLE_COMPOUND = 2; + var SHAPE_TYPE_STATIC_MESH = 3; + var SHAPE_TYPE_BOX = 4; + var SHAPE_TYPE_SPHERE = 5; + var DYNAMIC_DEFAULT = false; + + var MATERIAL_MODE_UV = 0; + var MATERIAL_MODE_PROJECTED = 1; + + function handleNewModelDialogResult(result) { + if (result) { + var url = result.url; + var shapeType; + switch (result.collisionShapeIndex) { + case SHAPE_TYPE_SIMPLE_HULL: + shapeType = "simple-hull"; + break; + case SHAPE_TYPE_SIMPLE_COMPOUND: + shapeType = "simple-compound"; + break; + case SHAPE_TYPE_STATIC_MESH: + shapeType = "static-mesh"; + break; + case SHAPE_TYPE_BOX: + shapeType = "box"; + break; + case SHAPE_TYPE_SPHERE: + shapeType = "sphere"; + break; + default: + shapeType = "none"; + } + + var dynamic = result.dynamic !== null ? result.dynamic : DYNAMIC_DEFAULT; + if (shapeType === "static-mesh" && dynamic) { + // The prompt should prevent this case + print("Error: model cannot be both static mesh and dynamic. This should never happen."); + } else if (url) { + createNewEntity({ + type: "Model", + modelURL: url, + shapeType: shapeType, + grab: { + grabbable: result.grabbable + }, + dynamic: dynamic, + }); + } + } + } + + function handleNewMaterialDialogResult(result) { + if (result) { + var materialURL = result.textInput; + //var materialMappingMode; + //switch (result.comboBox) { + // case MATERIAL_MODE_PROJECTED: + // materialMappingMode = "projected"; + // break; + // default: + // shapeType = "uv"; + //} + var materialData = ""; + if (materialURL.startsWith("materialData")) { + materialData = JSON.stringify({ + "materials": {} + }); + } + + var DEFAULT_LAYERED_MATERIAL_PRIORITY = 1; + if (materialURL) { + createNewEntity({ + type: "Material", + materialURL: materialURL, + //materialMappingMode: materialMappingMode, + priority: DEFAULT_LAYERED_MATERIAL_PRIORITY, + materialData: materialData + }); + } + } + } + + function fromQml(message) { // messages are {method, params}, like json-rpc. See also sendToQml. + var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); + tablet.popFromStack(); + switch (message.method) { + case "newModelDialogAdd": + handleNewModelDialogResult(message.params); + closeExistingDialogWindow(); + break; + case "newModelDialogCancel": + closeExistingDialogWindow(); + break; + case "newEntityButtonClicked": + buttonHandlers[message.params.buttonName](); + break; + case "newMaterialDialogAdd": + handleNewMaterialDialogResult(message.params); + closeExistingDialogWindow(); + break; + case "newMaterialDialogCancel": + closeExistingDialogWindow(); + break; + } + } + + var entitiesToDelete = []; + var deletedEntityTimer = null; + var DELETE_ENTITY_TIMER_TIMEOUT = 100; + + function checkDeletedEntityAndUpdate(entityID) { + // Allow for multiple entity deletes before updating the entities selected. + entitiesToDelete.push(entityID); + if (deletedEntityTimer !== null) { + Script.clearTimeout(deletedEntityTimer); + } + deletedEntityTimer = Script.setTimeout(function () { + if (entitiesToDelete.length > 0) { + selectionManager.removeEntities(entitiesToDelete, this); + } + entityListTool.removeEntities(entitiesToDelete, selectionManager.selections); + entitiesToDelete = []; + deletedEntityTimer = null; + }, DELETE_ENTITY_TIMER_TIMEOUT); + } + + function initialize() { + Script.scriptEnding.connect(cleanup); + Window.domainChanged.connect(function () { + if (isActive) { + tablet.gotoHomeScreen(); + } + that.setActive(false); + that.clearEntityList(); + checkEditPermissionsAndUpdate(); + }); + + HMD.displayModeChanged.connect(function() { + if (isActive) { + tablet.gotoHomeScreen(); + } + that.setActive(false); + }); + + Entities.canAdjustLocksChanged.connect(function (canAdjustLocks) { + if (isActive && !canAdjustLocks) { + that.setActive(false); + } + checkEditPermissionsAndUpdate(); + }); + + Entities.canRezChanged.connect(checkEditPermissionsAndUpdate); + Entities.canRezTmpChanged.connect(checkEditPermissionsAndUpdate); + Entities.canRezCertifiedChanged.connect(checkEditPermissionsAndUpdate); + Entities.canRezTmpCertifiedChanged.connect(checkEditPermissionsAndUpdate); + var hasRezPermissions = (Entities.canRez() || Entities.canRezTmp() || Entities.canRezCertified() || Entities.canRezTmpCertified()); + + Entities.deletingEntity.connect(checkDeletedEntityAndUpdate); + + var createButtonIconRsrc = (hasRezPermissions ? CREATE_ENABLED_ICON : CREATE_DISABLED_ICON); + tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); + activeButton = tablet.addButton({ + captionColor: hasRezPermissions ? "#ffffff" : "#888888", + icon: createButtonIconRsrc, + activeIcon: "icons/tablet-icons/edit-a.svg", + text: "CREATE", + sortOrder: 10 + }); + createButton = activeButton; + tablet.screenChanged.connect(function (type, url) { + var isGoingToHomescreenOnDesktop = (!shouldUseEditTabletApp() && + (url === 'hifi/tablet/TabletHome.qml' || url === '')); + if (isActive && (type !== "QML" || url !== Script.resolvePath("qml/Edit.qml")) && !isGoingToHomescreenOnDesktop) { + that.setActive(false); + } + }); + tablet.fromQml.connect(fromQml); + createToolsWindow.fromQml.addListener(fromQml); + + createButton.clicked.connect(function() { + if ( ! (Entities.canRez() || Entities.canRezTmp() || Entities.canRezCertified() || Entities.canRezTmpCertified()) ) { + Window.notifyEditError(INSUFFICIENT_PERMISSIONS_ERROR_MSG); + return; + } + + that.toggle(); + }); + + addButton("importEntitiesButton", function() { + Window.browseChanged.connect(onFileOpenChanged); + Window.browseAsync("Select Model to Import", "", "*.json"); + }); + + addButton("openAssetBrowserButton", function() { + Window.showAssetServer(); + }); + function createNewEntityDialogButtonCallback(entityType) { + return function() { + if (shouldUseEditTabletApp()) { + // tablet version of new-model dialog + var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); + tablet.pushOntoStack(Script.resolvePath("qml/New" + entityType + "Dialog.qml")); + } else { + closeExistingDialogWindow(); + var qmlPath = Script.resolvePath("qml/New" + entityType + "Window.qml"); + var DIALOG_WINDOW_SIZE = { x: 500, y: 300 }; + dialogWindow = Desktop.createWindow(qmlPath, { + title: "New " + entityType + " Entity", + additionalFlags: Desktop.ALWAYS_ON_TOP | Desktop.CLOSE_BUTTON_HIDES, + presentationMode: Desktop.PresentationMode.NATIVE, + size: DIALOG_WINDOW_SIZE, + visible: true + }); + dialogWindow.fromQml.connect(fromQml); + } + }; + } + + addButton("newModelButton", createNewEntityDialogButtonCallback("Model")); + + addButton("newShapeButton", function () { + createNewEntity({ + type: "Shape", + shape: "Cube", + }); + }); + + addButton("newLightButton", function () { + createNewEntity({ + type: "Light", + }); + }); + + addButton("newTextButton", function () { + createNewEntity({ + type: "Text", + }); + }); + + addButton("newImageButton", function () { + createNewEntity({ + type: "Image", + }); + }); + + addButton("newWebButton", function () { + createNewEntity({ + type: "Web", + }); + }); + + addButton("newZoneButton", function () { + createNewEntity({ + type: "Zone", + }); + }); + + addButton("newParticleButton", function () { + createNewEntity({ + type: "ParticleEffect", + }); + }); + + addButton("newMaterialButton", createNewEntityDialogButtonCallback("Material")); + + var deactivateCreateIfDesktopWindowsHidden = function() { + if (!shouldUseEditTabletApp() && !entityListTool.isVisible() && !createToolsWindow.isVisible()) { + that.setActive(false); + } + }; + entityListTool.interactiveWindowHidden.addListener(this, deactivateCreateIfDesktopWindowsHidden); + createToolsWindow.interactiveWindowHidden.addListener(this, deactivateCreateIfDesktopWindowsHidden); + + that.setActive(false); + } + + that.clearEntityList = function () { + entityListTool.clearEntityList(); + }; + + that.toggle = function () { + that.setActive(!isActive); + if (!isActive) { + tablet.gotoHomeScreen(); + } + }; + + that.setActive = function (active) { + ContextOverlay.enabled = !active; + Settings.setValue(EDIT_SETTING, active); + if (active) { + Controller.captureEntityClickEvents(); + } else { + Controller.releaseEntityClickEvents(); + + closeExistingDialogWindow(); + } + if (active === isActive) { + return; + } + if (active && !Entities.canRez() && !Entities.canRezTmp() && !Entities.canRezCertified() && !Entities.canRezTmpCertified()) { + Window.notifyEditError(INSUFFICIENT_PERMISSIONS_ERROR_MSG); + return; + } + Messages.sendLocalMessage("edit-events", JSON.stringify({ + enabled: active + })); + isActive = active; + activeButton.editProperties({isActive: isActive}); + undoHistory.setEnabled(isActive); + + var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); + + if (!isActive) { + entityListTool.setVisible(false); + gridTool.setVisible(false); + grid.setEnabled(false); + propertiesTool.setVisible(false); + selectionManager.clearSelections(this); + cameraManager.disable(); + selectionDisplay.disableTriggerMapping(); + tablet.landscape = false; + Controller.disableMapping(CONTROLLER_MAPPING_NAME); + } else { + if (shouldUseEditTabletApp()) { + tablet.loadQMLSource(Script.resolvePath("qml/Edit.qml"), true); + } else { + // make other apps inactive while in desktop mode + tablet.gotoHomeScreen(); + } + UserActivityLogger.enabledEdit(); + entityListTool.setVisible(true); + entityListTool.sendUpdate(); + gridTool.setVisible(true); + grid.setEnabled(true); + propertiesTool.setVisible(true); + selectionDisplay.enableTriggerMapping(); + print("starting tablet in landscape mode"); + tablet.landscape = true; + Controller.enableMapping(CONTROLLER_MAPPING_NAME); + // 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(); + } + entityIconOverlayManager.setVisible(isActive && Menu.isOptionChecked(MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE)); + Entities.setDrawZoneBoundaries(isActive && Menu.isOptionChecked(MENU_SHOW_ZONES_IN_EDIT_MODE)); + }; + + initialize(); + return that; +})(); + +var selectedEntityID; +var orientation; +var intersection; + + +function rayPlaneIntersection(pickRay, point, normal) { // + // + // This version of the test returns the intersection of a line with a plane + // + var collides = Vec3.dot(pickRay.direction, normal); + + var d = -Vec3.dot(point, normal); + var t = -(Vec3.dot(pickRay.origin, normal) + d) / collides; + + return Vec3.sum(pickRay.origin, Vec3.multiply(pickRay.direction, t)); +} + +function rayPlaneIntersection2(pickRay, point, normal) { + // + // This version of the test returns false if the ray is directed away from the plane + // + var collides = Vec3.dot(pickRay.direction, normal); + var d = -Vec3.dot(point, normal); + var t = -(Vec3.dot(pickRay.origin, normal) + d) / collides; + if (t < 0.0) { + return false; + } else { + return Vec3.sum(pickRay.origin, Vec3.multiply(pickRay.direction, t)); + } +} + +function findClickedEntity(event) { + var pickZones = event.isControl; + + if (pickZones) { + Entities.setZonesArePickable(true); + } + + var pickRay = Camera.computePickRay(event.x, event.y); + var tabletIDs = getMainTabletIDs(); + if (tabletIDs.length > 0) { + var overlayResult = Overlays.findRayIntersection(pickRay, true, tabletIDs); + if (overlayResult.intersects) { + return null; + } + } + + var entityResult = Entities.findRayIntersection(pickRay, true); // want precision picking + var iconResult = entityIconOverlayManager.findRayIntersection(pickRay); + iconResult.accurate = true; + + if (pickZones) { + Entities.setZonesArePickable(false); + } + + var result; + + if (iconResult.intersects) { + result = iconResult; + } else if (entityResult.intersects) { + result = entityResult; + } else { + return null; + } + + if (!result.accurate) { + return null; + } + + var foundEntity = result.entityID; + return { + pickRay: pickRay, + entityID: foundEntity, + intersection: result.intersection + }; +} + +// Handles selections on overlays while in edit mode by querying entities from +// entityIconOverlayManager. +function handleOverlaySelectionToolUpdates(channel, message, sender) { + var wantDebug = false; + if (sender !== MyAvatar.sessionUUID || channel !== 'entityToolUpdates') + return; + + var data = JSON.parse(message); + + if (data.method === "selectOverlay") { + if (!selectionDisplay.triggered() || selectionDisplay.triggeredHand === data.hand) { + if (wantDebug) { + print("setting selection to overlay " + data.overlayID); + } + var entity = entityIconOverlayManager.findEntity(data.overlayID); + + if (entity !== null) { + selectionManager.setSelections([entity], this); + } + } + } +} + +function handleMessagesReceived(channel, message, sender) { + switch( channel ){ + case 'entityToolUpdates': { + handleOverlaySelectionToolUpdates( channel, message, sender ); + break; + } + default: { + return; + } + } +} + +Messages.subscribe("entityToolUpdates"); +Messages.messageReceived.connect(handleMessagesReceived); + +var mouseHasMovedSincePress = false; +var mousePressStartTime = 0; +var mousePressStartPosition = { + x: 0, + y: 0 +}; +var mouseDown = false; + +function mousePressEvent(event) { + mouseDown = true; + mousePressStartPosition = { + x: event.x, + y: event.y + }; + mousePressStartTime = Date.now(); + mouseHasMovedSincePress = false; + mouseCapturedByTool = false; + + if (propertyMenu.mousePressEvent(event) || progressDialog.mousePressEvent(event)) { + mouseCapturedByTool = true; + return; + } + if (isActive) { + if (cameraManager.mousePressEvent(event) || selectionDisplay.mousePressEvent(event)) { + // Event handled; do nothing. + return; + } + } +} + +var mouseCapturedByTool = false; +var lastMousePosition = null; +var CLICK_TIME_THRESHOLD = 500 * 1000; // 500 ms +var CLICK_MOVE_DISTANCE_THRESHOLD = 20; +var IDLE_MOUSE_TIMEOUT = 200; + +var lastMouseMoveEvent = null; + +function mouseMoveEventBuffered(event) { + lastMouseMoveEvent = event; +} + +function mouseMove(event) { + if (mouseDown && !mouseHasMovedSincePress) { + var timeSincePressMicro = Date.now() - mousePressStartTime; + + var dX = mousePressStartPosition.x - event.x; + var dY = mousePressStartPosition.y - event.y; + var sqDist = (dX * dX) + (dY * dY); + + // If less than CLICK_TIME_THRESHOLD has passed since the mouse click AND the mouse has moved + // less than CLICK_MOVE_DISTANCE_THRESHOLD distance, then don't register this as a mouse move + // yet. The goal is to provide mouse clicks that are more lenient to small movements. + if (timeSincePressMicro < CLICK_TIME_THRESHOLD && sqDist < CLICK_MOVE_DISTANCE_THRESHOLD) { + return; + } + mouseHasMovedSincePress = true; + } + + if (!isActive) { + return; + } + + // allow the selectionDisplay and cameraManager to handle the event first, if it doesn't handle it, then do our own thing + if (selectionDisplay.mouseMoveEvent(event) || propertyMenu.mouseMoveEvent(event) || cameraManager.mouseMoveEvent(event)) { + return; + } + + lastMousePosition = { + x: event.x, + y: event.y + }; +} + +function mouseReleaseEvent(event) { + mouseDown = false; + + if (lastMouseMoveEvent) { + mouseMove(lastMouseMoveEvent); + lastMouseMoveEvent = null; + } + if (propertyMenu.mouseReleaseEvent(event)) { + return true; + } + if (isActive && selectionManager.hasSelection()) { + tooltip.show(false); + } + if (mouseCapturedByTool) { + + return; + } + + cameraManager.mouseReleaseEvent(event); + + if (!mouseHasMovedSincePress) { + mouseClickEvent(event); + } +} + +function wasTabletOrEditHandleClicked(event) { + var rayPick = Camera.computePickRay(event.x, event.y); + var result = Overlays.findRayIntersection(rayPick, true); + if (result.intersects) { + var overlayID = result.overlayID; + var tabletIDs = getMainTabletIDs(); + if (tabletIDs.indexOf(overlayID) >= 0) { + return true; + } else if (selectionDisplay.isEditHandle(overlayID)) { + return true; + } + } + return false; +} + +function mouseClickEvent(event) { + var wantDebug = false; + var result, properties, tabletClicked; + if (isActive && event.isLeftButton) { + result = findClickedEntity(event); + var tabletOrEditHandleClicked = wasTabletOrEditHandleClicked(event); + if (tabletOrEditHandleClicked) { + return; + } + + if (result === null || result === undefined) { + if (!event.isShifted) { + selectionManager.clearSelections(this); + } + return; + } + toolBar.setActive(true); + var pickRay = result.pickRay; + var foundEntity = result.entityID; + if (HMD.tabletID && foundEntity === HMD.tabletID) { + return; + } + properties = Entities.getEntityProperties(foundEntity); + var halfDiagonal = Vec3.length(properties.dimensions) / 2.0; + + if (wantDebug) { + print("Checking properties: " + properties.id + " " + " - Half Diagonal:" + halfDiagonal); + } + // P P - Model + // /| A - Palm + // / | d B - unit vector toward tip + // / | X - base of the perpendicular line + // A---X----->B d - distance fom axis + // x x - distance from A + // + // |X-A| = (P-A).B + // X === A + ((P-A).B)B + // d = |P-X| + + var A = pickRay.origin; + var B = Vec3.normalize(pickRay.direction); + var P = properties.position; + + var x = Vec3.dot(Vec3.subtract(P, A), B); + + var angularSize = 2 * Math.atan(halfDiagonal / Vec3.distance(Camera.getPosition(), properties.position)) * + 180 / Math.PI; + + var sizeOK = (allowLargeModels || angularSize < MAX_ANGULAR_SIZE) && + (allowSmallModels || angularSize > MIN_ANGULAR_SIZE); + + if (0 < x && sizeOK) { + selectedEntityID = foundEntity; + orientation = MyAvatar.orientation; + intersection = rayPlaneIntersection(pickRay, P, Quat.getForward(orientation)); + + if (!event.isShifted) { + selectionManager.setSelections([foundEntity], this); + } else { + selectionManager.addEntity(foundEntity, true, this); + } + selectionManager.saveProperties(); + + if (wantDebug) { + print("Model selected: " + foundEntity); + } + selectionDisplay.select(selectedEntityID, event); + + if (Menu.isOptionChecked(MENU_AUTO_FOCUS_ON_SELECT)) { + cameraManager.enable(); + cameraManager.focus(selectionManager.worldPosition, + selectionManager.worldDimensions, + Menu.isOptionChecked(MENU_EASE_ON_FOCUS)); + } + } + } else if (event.isRightButton) { + result = findClickedEntity(event); + if (result) { + if (SHOULD_SHOW_PROPERTY_MENU !== true) { + return; + } + properties = Entities.getEntityProperties(result.entityID); + if (properties.marketplaceID) { + propertyMenu.marketplaceID = properties.marketplaceID; + propertyMenu.updateMenuItemText(showMenuItem, "Show in Marketplace"); + } else { + propertyMenu.marketplaceID = null; + propertyMenu.updateMenuItemText(showMenuItem, "No marketplace info"); + } + propertyMenu.setPosition(event.x, event.y); + propertyMenu.show(); + } else { + propertyMenu.hide(); + } + } +} + +Controller.mousePressEvent.connect(mousePressEvent); +Controller.mouseMoveEvent.connect(mouseMoveEventBuffered); +Controller.mouseReleaseEvent.connect(mouseReleaseEvent); + + +// In order for editVoxels and editModels to play nice together, they each check to see if a "delete" menu item already +// exists. If it doesn't they add it. If it does they don't. They also only delete the menu item if they were the one that +// added it. +var modelMenuAddedDelete = false; +var originalLightsArePickable = Entities.getLightsArePickable(); + +function setupModelMenus() { + // adj our menuitems + Menu.addMenuItem({ + menuName: "Edit", + menuItemName: "Undo", + shortcutKey: 'Ctrl+Z', + position: 0, + }); + Menu.addMenuItem({ + menuName: "Edit", + menuItemName: "Redo", + shortcutKey: 'Ctrl+Y', + position: 1, + }); + + Menu.addMenuItem({ + menuName: "Edit", + menuItemName: "Entities", + isSeparator: true + }); + if (!Menu.menuItemExists("Edit", "Delete")) { + Menu.addMenuItem({ + menuName: "Edit", + menuItemName: "Delete", + shortcutKeyEvent: { + text: "delete" + }, + afterItem: "Entities", + }); + modelMenuAddedDelete = true; + } + + Menu.addMenuItem({ + menuName: "Edit", + menuItemName: "Parent Entity to Last", + afterItem: "Entities" + }); + + Menu.addMenuItem({ + menuName: "Edit", + menuItemName: "Unparent Entity", + afterItem: "Parent Entity to Last" + }); + + Menu.addMenuItem({ + menuName: GRABBABLE_ENTITIES_MENU_CATEGORY, + menuItemName: MENU_CREATE_ENTITIES_GRABBABLE, + afterItem: "Unparent Entity", + isCheckable: true, + isChecked: Settings.getValue(SETTING_EDIT_PREFIX + MENU_CREATE_ENTITIES_GRABBABLE, true) + }); + + Menu.addMenuItem({ + menuName: "Edit", + menuItemName: MENU_ALLOW_SELECTION_LARGE, + afterItem: MENU_CREATE_ENTITIES_GRABBABLE, + isCheckable: true, + isChecked: Settings.getValue(SETTING_EDIT_PREFIX + MENU_ALLOW_SELECTION_LARGE, true) + }); + Menu.addMenuItem({ + menuName: "Edit", + menuItemName: MENU_ALLOW_SELECTION_SMALL, + afterItem: MENU_ALLOW_SELECTION_LARGE, + isCheckable: true, + isChecked: Settings.getValue(SETTING_EDIT_PREFIX + MENU_ALLOW_SELECTION_SMALL, true) + }); + Menu.addMenuItem({ + menuName: "Edit", + menuItemName: MENU_ALLOW_SELECTION_LIGHTS, + afterItem: MENU_ALLOW_SELECTION_SMALL, + isCheckable: true, + isChecked: Settings.getValue(SETTING_EDIT_PREFIX + MENU_ALLOW_SELECTION_LIGHTS, false) + }); + Menu.addMenuItem({ + menuName: "Edit", + menuItemName: "Select All Entities In Box", + afterItem: "Allow Selecting of Lights" + }); + Menu.addMenuItem({ + menuName: "Edit", + menuItemName: "Select All Entities Touching Box", + afterItem: "Select All Entities In Box" + }); + + Menu.addMenuItem({ + menuName: "Edit", + menuItemName: "Export Entities", + afterItem: "Entities" + }); + Menu.addMenuItem({ + menuName: "Edit", + menuItemName: "Import Entities", + afterItem: "Export Entities" + }); + Menu.addMenuItem({ + menuName: "Edit", + menuItemName: "Import Entities from URL", + afterItem: "Import Entities" + }); + + Menu.addMenuItem({ + menuName: "Edit", + menuItemName: MENU_AUTO_FOCUS_ON_SELECT, + isCheckable: true, + isChecked: Settings.getValue(SETTING_AUTO_FOCUS_ON_SELECT) === "true" + }); + Menu.addMenuItem({ + menuName: "Edit", + menuItemName: MENU_EASE_ON_FOCUS, + afterItem: MENU_AUTO_FOCUS_ON_SELECT, + isCheckable: true, + isChecked: Settings.getValue(SETTING_EASE_ON_FOCUS) === "true" + }); + Menu.addMenuItem({ + menuName: "Edit", + menuItemName: MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE, + afterItem: MENU_EASE_ON_FOCUS, + isCheckable: true, + isChecked: Settings.getValue(SETTING_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE) !== "false" + }); + Menu.addMenuItem({ + menuName: "Edit", + menuItemName: MENU_SHOW_ZONES_IN_EDIT_MODE, + afterItem: MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE, + isCheckable: true, + isChecked: Settings.getValue(SETTING_SHOW_ZONES_IN_EDIT_MODE) !== "false" + }); + + Entities.setLightsArePickable(false); +} + +setupModelMenus(); // do this when first running our script. + +function cleanupModelMenus() { + Menu.removeMenuItem("Edit", "Undo"); + Menu.removeMenuItem("Edit", "Redo"); + + Menu.removeSeparator("Edit", "Entities"); + if (modelMenuAddedDelete) { + // delete our menuitems + Menu.removeMenuItem("Edit", "Delete"); + } + + Menu.removeMenuItem("Edit", "Parent Entity to Last"); + Menu.removeMenuItem("Edit", "Unparent Entity"); + Menu.removeMenuItem("Edit", "Allow Selecting of Large Models"); + Menu.removeMenuItem("Edit", "Allow Selecting of Small Models"); + Menu.removeMenuItem("Edit", "Allow Selecting of Lights"); + Menu.removeMenuItem("Edit", "Select All Entities In Box"); + Menu.removeMenuItem("Edit", "Select All Entities Touching Box"); + + Menu.removeMenuItem("Edit", "Export Entities"); + Menu.removeMenuItem("Edit", "Import Entities"); + Menu.removeMenuItem("Edit", "Import Entities from URL"); + + Menu.removeMenuItem("Edit", MENU_AUTO_FOCUS_ON_SELECT); + Menu.removeMenuItem("Edit", MENU_EASE_ON_FOCUS); + Menu.removeMenuItem("Edit", MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE); + Menu.removeMenuItem("Edit", MENU_SHOW_ZONES_IN_EDIT_MODE); + Menu.removeMenuItem("Edit", MENU_CREATE_ENTITIES_GRABBABLE); +} + +Script.scriptEnding.connect(function () { + toolBar.setActive(false); + Settings.setValue(SETTING_AUTO_FOCUS_ON_SELECT, Menu.isOptionChecked(MENU_AUTO_FOCUS_ON_SELECT)); + Settings.setValue(SETTING_EASE_ON_FOCUS, Menu.isOptionChecked(MENU_EASE_ON_FOCUS)); + Settings.setValue(SETTING_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE, Menu.isOptionChecked(MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE)); + Settings.setValue(SETTING_SHOW_ZONES_IN_EDIT_MODE, Menu.isOptionChecked(MENU_SHOW_ZONES_IN_EDIT_MODE)); + + Settings.setValue(SETTING_EDIT_PREFIX + MENU_ALLOW_SELECTION_LARGE, Menu.isOptionChecked(MENU_ALLOW_SELECTION_LARGE)); + Settings.setValue(SETTING_EDIT_PREFIX + MENU_ALLOW_SELECTION_SMALL, Menu.isOptionChecked(MENU_ALLOW_SELECTION_SMALL)); + Settings.setValue(SETTING_EDIT_PREFIX + MENU_ALLOW_SELECTION_LIGHTS, Menu.isOptionChecked(MENU_ALLOW_SELECTION_LIGHTS)); + + + progressDialog.cleanup(); + cleanupModelMenus(); + tooltip.cleanup(); + selectionDisplay.cleanup(); + entityShapeVisualizer.cleanup(); + Entities.setLightsArePickable(originalLightsArePickable); + + Overlays.deleteOverlay(importingSVOImageOverlay); + Overlays.deleteOverlay(importingSVOTextOverlay); + + Controller.keyReleaseEvent.disconnect(keyReleaseEvent); + Controller.keyPressEvent.disconnect(keyPressEvent); + + Controller.mousePressEvent.disconnect(mousePressEvent); + Controller.mouseMoveEvent.disconnect(mouseMoveEventBuffered); + Controller.mouseReleaseEvent.disconnect(mouseReleaseEvent); + + Messages.messageReceived.disconnect(handleMessagesReceived); + Messages.unsubscribe("entityToolUpdates"); + createButton = null; +}); + +var lastOrientation = null; +var lastPosition = null; + +// Do some stuff regularly, like check for placement of various overlays +Script.update.connect(function (deltaTime) { + progressDialog.move(); + selectionDisplay.checkControllerMove(); + var dOrientation = Math.abs(Quat.dot(Camera.orientation, lastOrientation) - 1); + var dPosition = Vec3.distance(Camera.position, lastPosition); + if (dOrientation > 0.001 || dPosition > 0.001) { + propertyMenu.hide(); + lastOrientation = Camera.orientation; + lastPosition = Camera.position; + } + if (lastMouseMoveEvent) { + mouseMove(lastMouseMoveEvent); + lastMouseMoveEvent = null; + } +}); + +function insideBox(center, dimensions, point) { + return (Math.abs(point.x - center.x) <= (dimensions.x / 2.0)) && + (Math.abs(point.y - center.y) <= (dimensions.y / 2.0)) && + (Math.abs(point.z - center.z) <= (dimensions.z / 2.0)); +} + +function selectAllEntitiesInCurrentSelectionBox(keepIfTouching) { + if (selectionManager.hasSelection()) { + // Get all entities touching the bounding box of the current selection + var boundingBoxCorner = Vec3.subtract(selectionManager.worldPosition, + Vec3.multiply(selectionManager.worldDimensions, 0.5)); + var entities = Entities.findEntitiesInBox(boundingBoxCorner, selectionManager.worldDimensions); + + if (!keepIfTouching) { + var isValid; + if (selectionManager.localPosition === null || selectionManager.localPosition === undefined) { + isValid = function (position) { + return insideBox(selectionManager.worldPosition, selectionManager.worldDimensions, position); + }; + } else { + isValid = function (position) { + var localPosition = Vec3.multiplyQbyV(Quat.inverse(selectionManager.localRotation), + Vec3.subtract(position, + selectionManager.localPosition)); + return insideBox(Vec3.ZERO, selectionManager.localDimensions, localPosition); + }; + } + for (var i = 0; i < entities.length; ++i) { + var properties = Entities.getEntityProperties(entities[i]); + if (!isValid(properties.position)) { + entities.splice(i, 1); + --i; + } + } + } + selectionManager.setSelections(entities, this); + } +} + +function sortSelectedEntities(selected) { + var sortedEntities = selected.slice(); + var begin = 0; + while (begin < sortedEntities.length) { + var elementRemoved = false; + var next = begin + 1; + while (next < sortedEntities.length) { + var beginID = sortedEntities[begin]; + var nextID = sortedEntities[next]; + + if (Entities.isChildOfParent(beginID, nextID)) { + sortedEntities[begin] = nextID; + sortedEntities[next] = beginID; + sortedEntities.splice(next, 1); + elementRemoved = true; + break; + } else if (Entities.isChildOfParent(nextID, beginID)) { + sortedEntities.splice(next, 1); + elementRemoved = true; + break; + } + next++; + } + if (!elementRemoved) { + begin++; + } + } + return sortedEntities; +} + +function recursiveDelete(entities, childrenList, deletedIDs, entityHostType) { + var wantDebug = false; + var entitiesLength = entities.length; + var initialPropertySets = Entities.getMultipleEntityProperties(entities); + var entityHostTypes = Entities.getMultipleEntityProperties(entities, 'entityHostType'); + for (var i = 0; i < entitiesLength; ++i) { + var entityID = entities[i]; + + if (entityHostTypes[i].entityHostType !== entityHostType) { + if (wantDebug) { + console.log("Skipping deletion of entity " + entityID + " with conflicting entityHostType: " + + entityHostTypes[i].entityHostType + ", expected: " + entityHostType); + } + continue; + } + + var children = Entities.getChildrenIDs(entityID); + var grandchildrenList = []; + recursiveDelete(children, grandchildrenList, deletedIDs, entityHostType); + childrenList.push({ + entityID: entityID, + properties: initialPropertySets[i], + children: grandchildrenList + }); + deletedIDs.push(entityID); + Entities.deleteEntity(entityID); + } +} + +function unparentSelectedEntities() { + if (SelectionManager.hasSelection()) { + var selectedEntities = selectionManager.selections; + var parentCheck = false; + + if (selectedEntities.length < 1) { + Window.notifyEditError("You must have an entity selected in order to unparent it."); + return; + } + selectedEntities.forEach(function (id, index) { + var parentId = Entities.getEntityProperties(id, ["parentID"]).parentID; + if (parentId !== null && parentId.length > 0 && parentId !== Uuid.NULL) { + parentCheck = true; + } + Entities.editEntity(id, {parentID: null}); + return true; + }); + if (parentCheck) { + if (selectedEntities.length > 1) { + Window.notify("Entities unparented"); + } else { + Window.notify("Entity unparented"); + } + } else { + if (selectedEntities.length > 1) { + Window.notify("Selected Entities have no parents"); + } else { + Window.notify("Selected Entity does not have a parent"); + } + } + } else { + Window.notifyEditError("You have nothing selected to unparent"); + } +} +function parentSelectedEntities() { + if (SelectionManager.hasSelection()) { + var selectedEntities = selectionManager.selections; + if (selectedEntities.length <= 1) { + Window.notifyEditError("You must have multiple entities selected in order to parent them"); + return; + } + var parentCheck = false; + var lastEntityId = selectedEntities[selectedEntities.length - 1]; + selectedEntities.forEach(function (id, index) { + if (lastEntityId !== id) { + var parentId = Entities.getEntityProperties(id, ["parentID"]).parentID; + if (parentId !== lastEntityId) { + parentCheck = true; + } + Entities.editEntity(id, {parentID: lastEntityId}); + } + }); + + if (parentCheck) { + Window.notify("Entities parented"); + } else { + Window.notify("Entities are already parented to last"); + } + } else { + Window.notifyEditError("You have nothing selected to parent"); + } +} +function deleteSelectedEntities() { + if (SelectionManager.hasSelection()) { + var deletedIDs = []; + + SelectionManager.saveProperties(); + var savedProperties = []; + var newSortedSelection = sortSelectedEntities(selectionManager.selections); + var entityHostTypes = Entities.getMultipleEntityProperties(newSortedSelection, 'entityHostType'); + for (var i = 0; i < newSortedSelection.length; ++i) { + var entityID = newSortedSelection[i]; + var initialProperties = SelectionManager.savedProperties[entityID]; + if (initialProperties.locked || + (initialProperties.avatarEntity && initialProperties.owningAvatarID !== MyAvatar.sessionUUID)) { + continue; + } + var children = Entities.getChildrenIDs(entityID); + var childList = []; + recursiveDelete(children, childList, deletedIDs, entityHostTypes[i].entityHostType); + savedProperties.push({ + entityID: entityID, + properties: initialProperties, + children: childList + }); + deletedIDs.push(entityID); + Entities.deleteEntity(entityID); + } + + if (savedProperties.length > 0) { + SelectionManager.clearSelections(this); + pushCommandForSelections([], savedProperties); + entityListTool.deleteEntities(deletedIDs); + } + } +} + +function toggleSelectedEntitiesLocked() { + if (SelectionManager.hasSelection()) { + var locked = !Entities.getEntityProperties(SelectionManager.selections[0], ["locked"]).locked; + for (var i = 0; i < selectionManager.selections.length; i++) { + var entityID = SelectionManager.selections[i]; + Entities.editEntity(entityID, { + locked: locked + }); + } + entityListTool.sendUpdate(); + selectionManager._update(false, this); + } +} + +function toggleSelectedEntitiesVisible() { + if (SelectionManager.hasSelection()) { + var visible = !Entities.getEntityProperties(SelectionManager.selections[0], ["visible"]).visible; + for (var i = 0; i < selectionManager.selections.length; i++) { + var entityID = SelectionManager.selections[i]; + Entities.editEntity(entityID, { + visible: visible + }); + } + entityListTool.sendUpdate(); + selectionManager._update(false, this); + } +} + +function onFileSaveChanged(filename) { + Window.saveFileChanged.disconnect(onFileSaveChanged); + if (filename !== "") { + var success = Clipboard.exportEntities(filename, selectionManager.selections); + if (!success) { + Window.notifyEditError("Export failed."); + } + } +} + +function onFileOpenChanged(filename) { + // disconnect the event, otherwise the requests will stack up + try { + // Not all calls to onFileOpenChanged() connect an event. + Window.browseChanged.disconnect(onFileOpenChanged); + } catch (e) { + // Ignore. + } + + var importURL = null; + if (filename !== "") { + importURL = filename; + if (!/^(http|https):\/\//.test(filename)) { + importURL = "file:///" + importURL; + } + } + if (importURL) { + if (!isActive && (Entities.canRez() && Entities.canRezTmp() && Entities.canRezCertified() && Entities.canRezTmpCertified())) { + toolBar.toggle(); + } + importSVO(importURL); + } +} + +function onPromptTextChanged(prompt) { + Window.promptTextChanged.disconnect(onPromptTextChanged); + if (prompt !== "") { + if (!isActive && (Entities.canRez() && Entities.canRezTmp() && Entities.canRezCertified() && Entities.canRezTmpCertified())) { + toolBar.toggle(); + } + importSVO(prompt); + } +} + +function handleMenuEvent(menuItem) { + if (menuItem === "Allow Selecting of Small Models") { + allowSmallModels = Menu.isOptionChecked("Allow Selecting of Small Models"); + } else if (menuItem === "Allow Selecting of Large Models") { + allowLargeModels = Menu.isOptionChecked("Allow Selecting of Large Models"); + } else if (menuItem === "Allow Selecting of Lights") { + Entities.setLightsArePickable(Menu.isOptionChecked("Allow Selecting of Lights")); + } else if (menuItem === "Delete") { + deleteSelectedEntities(); + } else if (menuItem === "Undo") { + undoHistory.undo(); + } else if (menuItem === "Redo") { + undoHistory.redo(); + } else if (menuItem === "Parent Entity to Last") { + parentSelectedEntities(); + } else if (menuItem === "Unparent Entity") { + unparentSelectedEntities(); + } else if (menuItem === "Export Entities") { + if (!selectionManager.hasSelection()) { + Window.notifyEditError("No entities have been selected."); + } else { + Window.saveFileChanged.connect(onFileSaveChanged); + Window.saveAsync("Select Where to Save", "", "*.json"); + } + } else if (menuItem === "Import Entities" || menuItem === "Import Entities from URL") { + if (menuItem === "Import Entities") { + Window.browseChanged.connect(onFileOpenChanged); + Window.browseAsync("Select Model to Import", "", "*.json"); + } else { + Window.promptTextChanged.connect(onPromptTextChanged); + Window.promptAsync("URL of SVO to import", ""); + } + } else if (menuItem === "Select All Entities In Box") { + selectAllEntitiesInCurrentSelectionBox(false); + } else if (menuItem === "Select All Entities Touching Box") { + selectAllEntitiesInCurrentSelectionBox(true); + } else if (menuItem === MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE) { + entityIconOverlayManager.setVisible(isActive && Menu.isOptionChecked(MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE)); + } else if (menuItem === MENU_SHOW_ZONES_IN_EDIT_MODE) { + Entities.setDrawZoneBoundaries(isActive && Menu.isOptionChecked(MENU_SHOW_ZONES_IN_EDIT_MODE)); + } else if (menuItem === MENU_CREATE_ENTITIES_GRABBABLE) { + Settings.setValue(SETTING_EDIT_PREFIX + menuItem, Menu.isOptionChecked(menuItem)); + } + tooltip.show(false); +} + +var HALF_TREE_SCALE = 16384; + +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 + delta)); + } else { + position = Vec3.sum(MyAvatar.position, Vec3.multiply(Quat.getForward(MyAvatar.orientation), CREATE_DISTANCE + delta)); + } + + if (position.x > HALF_TREE_SCALE || position.y > HALF_TREE_SCALE || position.z > HALF_TREE_SCALE) { + return null; + } + return position; +} + +function importSVO(importURL) { + if (!Entities.canRez() && !Entities.canRezTmp() && + !Entities.canRezCertified() && !Entities.canRezTmpCertified()) { + Window.notifyEditError(INSUFFICIENT_PERMISSIONS_IMPORT_ERROR_MSG); + return; + } + + Overlays.editOverlay(importingSVOTextOverlay, { + visible: true + }); + Overlays.editOverlay(importingSVOImageOverlay, { + visible: true + }); + + var success = Clipboard.importEntities(importURL); + + if (success) { + var VERY_LARGE = 10000; + var isLargeImport = Clipboard.getClipboardContentsLargestDimension() >= VERY_LARGE; + var position = Vec3.ZERO; + if (!isLargeImport) { + position = getPositionToCreateEntity(Clipboard.getClipboardContentsLargestDimension() / 2); + } + 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 deltaPosition = Vec3.ZERO; + var entityPositions = []; + var entityParentIDs = []; + + var propType = Entities.getEntityProperties(pastedEntityIDs[0], ["type"]).type; + var NO_ADJUST_ENTITY_TYPES = ["Zone", "Light", "ParticleEffect"]; + if (NO_ADJUST_ENTITY_TYPES.indexOf(propType) === -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. + for (var i = 0, length = pastedEntityIDs.length; i < length; i++) { + var curLoopEntityProps = Entities.getEntityProperties(pastedEntityIDs[i], ["position", "dimensions", + "registrationPoint", "rotation", "parentID"]); + var adjustedPosition = adjustPositionPerBoundingBox(targetPosition, targetDirection, + curLoopEntityProps.registrationPoint, curLoopEntityProps.dimensions, curLoopEntityProps.rotation); + var delta = Vec3.subtract(adjustedPosition, curLoopEntityProps.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] = curLoopEntityProps.position; + entityParentIDs[i] = curLoopEntityProps.parentID; + } + deltaPerpendicular = Vec3.multiply(1 / pastedEntityIDs.length, deltaPerpendicular); + deltaPosition = Vec3.sum(Vec3.multiply(deltaParallel, targetDirection), deltaPerpendicular); + } + + if (grid.getSnapToGrid()) { + var firstEntityProps = Entities.getEntityProperties(pastedEntityIDs[0], ["position", "dimensions", + "registrationPoint"]); + var positionPreSnap = Vec3.sum(deltaPosition, firstEntityProps.position); + position = grid.snapToSurface(grid.snapToGrid(positionPreSnap, false, firstEntityProps.dimensions, + firstEntityProps.registrationPoint), firstEntityProps.dimensions, firstEntityProps.registrationPoint); + deltaPosition = Vec3.subtract(position, firstEntityProps.position); + } + + if (!Vec3.equal(deltaPosition, Vec3.ZERO)) { + for (var editEntityIndex = 0, numEntities = pastedEntityIDs.length; editEntityIndex < numEntities; editEntityIndex++) { + if (Uuid.isNull(entityParentIDs[editEntityIndex])) { + Entities.editEntity(pastedEntityIDs[editEntityIndex], { + position: Vec3.sum(deltaPosition, entityPositions[editEntityIndex]) + }); + } + } + } + } + + if (isActive) { + selectionManager.setSelections(pastedEntityIDs, this); + } + } else { + Window.notifyEditError("Can't import entities: entities would be out of bounds."); + } + } else { + Window.notifyEditError("There was an error importing the entity file."); + } + + Overlays.editOverlay(importingSVOTextOverlay, { + visible: false + }); + Overlays.editOverlay(importingSVOImageOverlay, { + visible: false + }); +} +Window.svoImportRequested.connect(importSVO); + +Menu.menuItemEvent.connect(handleMenuEvent); + +var keyPressEvent = function (event) { + if (isActive) { + cameraManager.keyPressEvent(event); + } +}; +var keyReleaseEvent = function (event) { + if (isActive) { + cameraManager.keyReleaseEvent(event); + } +}; +Controller.keyReleaseEvent.connect(keyReleaseEvent); +Controller.keyPressEvent.connect(keyPressEvent); + +function deleteKey(value) { + if (value === 0) { // on release + deleteSelectedEntities(); + } +} +function deselectKey(value) { + if (value === 0) { // on release + selectionManager.clearSelections(this); + } +} +function toggleKey(value) { + if (value === 0) { // on release + selectionDisplay.toggleSpaceMode(); + } +} +function focusKey(value) { + if (value === 0) { // on release + cameraManager.enable(); + if (selectionManager.hasSelection()) { + cameraManager.focus(selectionManager.worldPosition, selectionManager.worldDimensions, + Menu.isOptionChecked(MENU_EASE_ON_FOCUS)); + } + } +} +function gridKey(value) { + if (value === 0) { // on release + if (selectionManager.hasSelection()) { + grid.moveToSelection(); + } + } +} +function recursiveAdd(newParentID, parentData) { + if (parentData.children !== undefined) { + var children = parentData.children; + for (var i = 0; i < children.length; i++) { + var childProperties = children[i].properties; + childProperties.parentID = newParentID; + var newChildID = Entities.addEntity(childProperties); + recursiveAdd(newChildID, children[i]); + } + } +} + +var UndoHistory = function(onUpdate) { + this.history = []; + // The current position is the index of the last executed action in the history array. + // + // -1 0 1 2 3 <- position + // A B C D <- actions in history + // + // If our lastExecutedIndex is 1, the last executed action is B. + // If we undo, we undo B (index 1). If we redo, we redo C (index 2). + this.lastExecutedIndex = -1; + this.enabled = true; + this.onUpdate = onUpdate; +}; + +UndoHistory.prototype.pushCommand = function(undoFn, undoArgs, redoFn, redoArgs) { + if (!this.enabled) { + return; + } + // Delete any history following the last executed action. + this.history.splice(this.lastExecutedIndex + 1); + this.history.push({ + undoFn: undoFn, + undoArgs: undoArgs, + redoFn: redoFn, + redoArgs: redoArgs + }); + this.lastExecutedIndex++; + + if (this.onUpdate) { + this.onUpdate(); + } +}; +UndoHistory.prototype.setEnabled = function(enabled) { + this.enabled = enabled; + if (this.onUpdate) { + this.onUpdate(); + } +}; +UndoHistory.prototype.canUndo = function() { + return this.enabled && this.lastExecutedIndex >= 0; +}; +UndoHistory.prototype.canRedo = function() { + return this.enabled && this.lastExecutedIndex < this.history.length - 1; +}; +UndoHistory.prototype.undo = function() { + if (!this.canUndo()) { + console.warn("Cannot undo action"); + return; + } + + var command = this.history[this.lastExecutedIndex]; + command.undoFn(command.undoArgs); + this.lastExecutedIndex--; + + if (this.onUpdate) { + this.onUpdate(); + } +}; +UndoHistory.prototype.redo = function() { + if (!this.canRedo()) { + console.warn("Cannot redo action"); + return; + } + + var command = this.history[this.lastExecutedIndex + 1]; + command.redoFn(command.redoArgs); + this.lastExecutedIndex++; + + if (this.onUpdate) { + this.onUpdate(); + } +}; + +function updateUndoRedoMenuItems() { + Menu.setMenuEnabled("Edit > Undo", undoHistory.canUndo()); + Menu.setMenuEnabled("Edit > Redo", undoHistory.canRedo()); +} +var undoHistory = new UndoHistory(updateUndoRedoMenuItems); +updateUndoRedoMenuItems(); + +// When an entity has been deleted we need a way to "undo" this deletion. Because it's not currently +// possible to create an entity with a specific id, earlier undo commands to the deleted entity +// will fail if there isn't a way to find the new entity id. +var DELETED_ENTITY_MAP = {}; + +function applyEntityProperties(data) { + var editEntities = data.editEntities; + var createEntities = data.createEntities; + var deleteEntities = data.deleteEntities; + var selectedEntityIDs = []; + var selectEdits = createEntities.length === 0 || !data.selectCreated; + var i, entityID, entityProperties; + for (i = 0; i < createEntities.length; i++) { + entityID = createEntities[i].entityID; + entityProperties = createEntities[i].properties; + var newEntityID = Entities.addEntity(entityProperties); + recursiveAdd(newEntityID, createEntities[i]); + DELETED_ENTITY_MAP[entityID] = newEntityID; + if (data.selectCreated) { + selectedEntityIDs.push(newEntityID); + } + } + for (i = 0; i < deleteEntities.length; i++) { + entityID = deleteEntities[i].entityID; + if (DELETED_ENTITY_MAP[entityID] !== undefined) { + entityID = DELETED_ENTITY_MAP[entityID]; + } + Entities.deleteEntity(entityID); + var index = selectedEntityIDs.indexOf(entityID); + if (index >= 0) { + selectedEntityIDs.splice(index, 1); + } + } + for (i = 0; i < editEntities.length; i++) { + entityID = editEntities[i].entityID; + if (DELETED_ENTITY_MAP[entityID] !== undefined) { + entityID = DELETED_ENTITY_MAP[entityID]; + } + entityProperties = editEntities[i].properties; + if (entityProperties !== null) { + Entities.editEntity(entityID, entityProperties); + } + if (selectEdits) { + selectedEntityIDs.push(entityID); + } + } + + // We might be getting an undo while edit.js is disabled. If that is the case, don't set + // our selections, causing the edit widgets to display. + if (isActive) { + selectionManager.setSelections(selectedEntityIDs, this); + selectionManager.saveProperties(); + } +} + +// For currently selected entities, push a command to the UndoStack that uses the current entity properties for the +// redo command, and the saved properties for the undo command. Also, include create and delete entity data. +function pushCommandForSelections(createdEntityData, deletedEntityData, doNotSaveEditProperties) { + doNotSaveEditProperties = false; + var undoData = { + editEntities: [], + createEntities: deletedEntityData || [], + deleteEntities: createdEntityData || [], + selectCreated: true + }; + var redoData = { + editEntities: [], + createEntities: createdEntityData || [], + deleteEntities: deletedEntityData || [], + selectCreated: true + }; + for (var i = 0; i < SelectionManager.selections.length; i++) { + var entityID = SelectionManager.selections[i]; + var initialProperties = SelectionManager.savedProperties[entityID]; + var currentProperties = null; + if (!initialProperties) { + continue; + } + + if (doNotSaveEditProperties) { + initialProperties = null; + } else { + currentProperties = Entities.getEntityProperties(entityID); + } + + undoData.editEntities.push({ + entityID: entityID, + properties: initialProperties + }); + redoData.editEntities.push({ + entityID: entityID, + properties: currentProperties + }); + } + undoHistory.pushCommand(applyEntityProperties, undoData, applyEntityProperties, redoData); +} + +var ServerScriptStatusMonitor = function(entityID, statusCallback) { + var self = this; + + self.entityID = entityID; + self.active = true; + self.sendRequestTimerID = null; + + var onStatusReceived = function(success, isRunning, status, errorInfo) { + if (self.active) { + statusCallback({ + statusRetrieved: success, + isRunning: isRunning, + status: status, + errorInfo: errorInfo + }); + self.sendRequestTimerID = Script.setTimeout(function() { + if (self.active) { + Entities.getServerScriptStatus(entityID, onStatusReceived); + } + }, 1000); + } + }; + self.stop = function() { + self.active = false; + }; + + Entities.getServerScriptStatus(entityID, onStatusReceived); +}; + +var PropertiesTool = function (opts) { + var that = {}; + + var webView = null; + webView = Tablet.getTablet("com.highfidelity.interface.tablet.system"); + webView.setVisible = function(value) {}; + + var visible = false; + + // This keeps track of the last entity ID that was selected. If multiple entities + // are selected or if no entity is selected this will be `null`. + var currentSelectedEntityID = null; + var statusMonitor = null; + var blockPropertyUpdates = false; + + that.setVisible = function (newVisible) { + visible = newVisible; + webView.setVisible(shouldUseEditTabletApp() && visible); + createToolsWindow.setVisible(!shouldUseEditTabletApp() && visible); + }; + + that.setVisible(false); + + function emitScriptEvent(data) { + var dataString = JSON.stringify(data); + webView.emitScriptEvent(dataString); + createToolsWindow.emitScriptEvent(dataString); + } + + function updateScriptStatus(info) { + info.type = "server_script_status"; + emitScriptEvent(info); + } + + function resetScriptStatus() { + updateScriptStatus({ + statusRetrieved: undefined, + isRunning: undefined, + status: "", + errorInfo: "" + }); + } + + that.setSpaceMode = function(spaceMode) { + emitScriptEvent({ + type: 'setSpaceMode', + spaceMode: spaceMode + }) + }; + + function updateSelections(selectionUpdated, caller) { + if (blockPropertyUpdates) { + return; + } + + var data = { + type: 'update', + spaceMode: selectionDisplay.getSpaceMode(), + isPropertiesToolUpdate: caller === this, + }; + + if (selectionUpdated) { + resetScriptStatus(); + + if (selectionManager.selections.length !== 1) { + if (statusMonitor !== null) { + statusMonitor.stop(); + statusMonitor = null; + } + currentSelectedEntityID = null; + } else if (currentSelectedEntityID !== selectionManager.selections[0]) { + if (statusMonitor !== null) { + statusMonitor.stop(); + } + var entityID = selectionManager.selections[0]; + currentSelectedEntityID = entityID; + statusMonitor = new ServerScriptStatusMonitor(entityID, updateScriptStatus); + } + } + + var selections = []; + for (var i = 0; i < selectionManager.selections.length; i++) { + var entity = {}; + entity.id = selectionManager.selections[i]; + entity.properties = Entities.getEntityProperties(selectionManager.selections[i]); + if (entity.properties.rotation !== undefined) { + entity.properties.rotation = Quat.safeEulerAngles(entity.properties.rotation); + } + if (entity.properties.localRotation !== undefined) { + entity.properties.localRotation = Quat.safeEulerAngles(entity.properties.localRotation); + } + if (entity.properties.emitOrientation !== undefined) { + entity.properties.emitOrientation = Quat.safeEulerAngles(entity.properties.emitOrientation); + } + if (entity.properties.keyLight !== undefined && entity.properties.keyLight.direction !== undefined) { + entity.properties.keyLight.direction = Vec3.toPolar(entity.properties.keyLight.direction); + entity.properties.keyLight.direction.z = 0.0; + } + selections.push(entity); + } + data.selections = selections; + + emitScriptEvent(data); + } + selectionManager.addEventListener(updateSelections, this); + + + var onWebEventReceived = function(data) { + try { + data = JSON.parse(data); + } catch(e) { + return; + } + var i, properties, dY, diff, newPosition; + if (data.type === "update") { + + if (data.properties || data.propertiesMap) { + var propertiesMap = data.propertiesMap; + if (propertiesMap === undefined) { + propertiesMap = [{ + entityIDs: data.ids, + properties: data.properties, + }]; + } + + var sendListUpdate = false; + propertiesMap.forEach(function(propertiesObject) { + var properties = propertiesObject.properties; + var updateEntityIDs = propertiesObject.entityIDs; + if (properties.dynamic === false) { + // this object is leaving dynamic, so we zero its velocities + properties.localVelocity = Vec3.ZERO; + properties.localAngularVelocity = Vec3.ZERO; + } + if (properties.rotation !== undefined) { + properties.rotation = Quat.fromVec3Degrees(properties.rotation); + } + if (properties.localRotation !== undefined) { + properties.localRotation = Quat.fromVec3Degrees(properties.localRotation); + } + if (properties.emitOrientation !== undefined) { + properties.emitOrientation = Quat.fromVec3Degrees(properties.emitOrientation); + } + if (properties.keyLight !== undefined && properties.keyLight.direction !== undefined) { + var currentKeyLightDirection = Vec3.toPolar(Entities.getEntityProperties(selectionManager.selections[0], ['keyLight.direction']).keyLight.direction); + if (properties.keyLight.direction.x === undefined) { + properties.keyLight.direction.x = currentKeyLightDirection.x; + } + if (properties.keyLight.direction.y === undefined) { + properties.keyLight.direction.y = currentKeyLightDirection.y; + } + properties.keyLight.direction = Vec3.fromPolar(properties.keyLight.direction.x, properties.keyLight.direction.y); + } + + updateEntityIDs.forEach(function (entityID) { + Entities.editEntity(entityID, properties); + }); + + if (properties.name !== undefined || properties.modelURL !== undefined || properties.materialURL !== undefined || + properties.visible !== undefined || properties.locked !== undefined) { + + sendListUpdate = true; + } + + }); + if (sendListUpdate) { + entityListTool.sendUpdate(); + } + } + + + if (data.onlyUpdateEntities) { + blockPropertyUpdates = true; + } else { + pushCommandForSelections(); + SelectionManager.saveProperties(); + } + selectionManager._update(false, this); + blockPropertyUpdates = false; + } else if (data.type === 'saveUserData' || data.type === 'saveMaterialData') { + data.ids.forEach(function(entityID) { + Entities.editEntity(entityID, data.properties); + }); + } else if (data.type === "showMarketplace") { + showMarketplace(); + } else if (data.type === "action") { + if (data.action === "moveSelectionToGrid") { + if (selectionManager.hasSelection()) { + selectionManager.saveProperties(); + dY = grid.getOrigin().y - (selectionManager.worldPosition.y - selectionManager.worldDimensions.y / 2); + diff = { + x: 0, + y: dY, + z: 0 + }; + for (i = 0; i < selectionManager.selections.length; i++) { + properties = selectionManager.savedProperties[selectionManager.selections[i]]; + newPosition = Vec3.sum(properties.position, diff); + Entities.editEntity(selectionManager.selections[i], { + position: newPosition + }); + } + pushCommandForSelections(); + selectionManager._update(false, this); + } + } else if (data.action === "moveAllToGrid") { + if (selectionManager.hasSelection()) { + selectionManager.saveProperties(); + for (i = 0; i < selectionManager.selections.length; i++) { + properties = selectionManager.savedProperties[selectionManager.selections[i]]; + var bottomY = properties.boundingBox.center.y - properties.boundingBox.dimensions.y / 2; + dY = grid.getOrigin().y - bottomY; + diff = { + x: 0, + y: dY, + z: 0 + }; + newPosition = Vec3.sum(properties.position, diff); + Entities.editEntity(selectionManager.selections[i], { + position: newPosition + }); + } + pushCommandForSelections(); + selectionManager._update(false, this); + } + } else if (data.action === "resetToNaturalDimensions") { + if (selectionManager.hasSelection()) { + selectionManager.saveProperties(); + for (i = 0; i < selectionManager.selections.length; i++) { + properties = selectionManager.savedProperties[selectionManager.selections[i]]; + var naturalDimensions = properties.naturalDimensions; + + // If any of the natural dimensions are not 0, resize + if (properties.type === "Model" && naturalDimensions.x === 0 && naturalDimensions.y === 0 && + naturalDimensions.z === 0) { + Window.notifyEditError("Cannot reset entity to its natural dimensions: Model URL" + + " is invalid or the model has not yet been loaded."); + } else { + Entities.editEntity(selectionManager.selections[i], { + dimensions: properties.naturalDimensions + }); + } + } + pushCommandForSelections(); + selectionManager._update(false, this); + } + } else if (data.action === "previewCamera") { + if (selectionManager.hasSelection()) { + Camera.mode = "entity"; + Camera.cameraEntity = selectionManager.selections[0]; + } + } else if (data.action === "rescaleDimensions") { + var multiplier = data.percentage / 100.0; + if (selectionManager.hasSelection()) { + selectionManager.saveProperties(); + for (i = 0; i < selectionManager.selections.length; i++) { + properties = selectionManager.savedProperties[selectionManager.selections[i]]; + Entities.editEntity(selectionManager.selections[i], { + dimensions: Vec3.multiply(multiplier, properties.dimensions) + }); + } + pushCommandForSelections(); + selectionManager._update(false, this); + } + } else if (data.action === "reloadClientScripts") { + if (selectionManager.hasSelection()) { + var timestamp = Date.now(); + for (i = 0; i < selectionManager.selections.length; i++) { + Entities.editEntity(selectionManager.selections[i], { + scriptTimestamp: timestamp + }); + } + } + } else if (data.action === "reloadServerScripts") { + if (selectionManager.hasSelection()) { + for (i = 0; i < selectionManager.selections.length; i++) { + Entities.reloadServerScripts(selectionManager.selections[i]); + } + } + } + } else if (data.type === "propertiesPageReady") { + updateSelections(true); + } else if (data.type === "tooltipsRequest") { + emitScriptEvent({ + type: 'tooltipsReply', + tooltips: Script.require('./assets/data/createAppTooltips.json'), + hmdActive: HMD.active, + }); + } else if (data.type === "propertyRangeRequest") { + var propertyRanges = {}; + data.properties.forEach(function (property) { + propertyRanges[property] = Entities.getPropertyInfo(property); + }); + emitScriptEvent({ + type: 'propertyRangeReply', + propertyRanges: propertyRanges, + }); + } else if (data.type === "materialTargetRequest") { + var parentModelData; + var properties = Entities.getEntityProperties(data.entityID, ["type", "parentID"]); + if (properties.type === "Material" && properties.parentID !== Uuid.NULL) { + var parentType = Entities.getEntityProperties(properties.parentID, ["type"]).type; + if (parentType === "Model" || Entities.getNestableType(properties.parentID) === "avatar") { + parentModelData = Graphics.getModel(properties.parentID); + } else if (parentType === "Shape" || parentType === "Box" || parentType === "Sphere") { + parentModelData = {}; + parentModelData.numMeshes = 1; + parentModelData.materialNames = []; + } + } + emitScriptEvent({ + type: 'materialTargetReply', + entityID: data.entityID, + materialTargetData: parentModelData, + }); + } else if (data.type === "zoneListRequest") { + emitScriptEvent({ + type: 'zoneListRequest', + zones: getExistingZoneList() + }); + } + }; + + HMD.displayModeChanged.connect(function() { + emitScriptEvent({ + type: 'hmdActiveChanged', + hmdActive: HMD.active, + }); + }); + + createToolsWindow.webEventReceived.addListener(this, onWebEventReceived); + + webView.webEventReceived.connect(this, onWebEventReceived); + + return that; +}; + + +var PopupMenu = function () { + var self = this; + + var MENU_ITEM_HEIGHT = 21; + var MENU_ITEM_SPACING = 1; + var TEXT_MARGIN = 7; + + var overlays = []; + var overlayInfo = {}; + + var visible = false; + + var upColor = { + red: 0, + green: 0, + blue: 0 + }; + var downColor = { + red: 192, + green: 192, + blue: 192 + }; + var overColor = { + red: 128, + green: 128, + blue: 128 + }; + + self.onSelectMenuItem = function () {}; + + self.addMenuItem = function (name) { + var id = Overlays.addOverlay("text", { + text: name, + backgroundAlpha: 1.0, + backgroundColor: upColor, + topMargin: TEXT_MARGIN, + leftMargin: TEXT_MARGIN, + width: 210, + height: MENU_ITEM_HEIGHT, + font: { + size: 12 + }, + visible: false + }); + overlays.push(id); + overlayInfo[id] = { + name: name + }; + return id; + }; + + self.updateMenuItemText = function (id, newText) { + Overlays.editOverlay(id, { + text: newText + }); + }; + + self.setPosition = function (x, y) { + for (var key in overlayInfo) { + Overlays.editOverlay(key, { + x: x, + y: y + }); + y += MENU_ITEM_HEIGHT + MENU_ITEM_SPACING; + } + }; + + self.onSelected = function () {}; + + var pressingOverlay = null; + var hoveringOverlay = null; + + self.mousePressEvent = function (event) { + if (event.isLeftButton) { + var overlay = Overlays.getOverlayAtPoint({ + x: event.x, + y: event.y + }); + if (overlay in overlayInfo) { + pressingOverlay = overlay; + Overlays.editOverlay(pressingOverlay, { + backgroundColor: downColor + }); + } else { + self.hide(); + } + return false; + } + }; + self.mouseMoveEvent = function (event) { + if (visible) { + var overlay = Overlays.getOverlayAtPoint({ + x: event.x, + y: event.y + }); + if (!pressingOverlay) { + if (hoveringOverlay !== null && overlay !== hoveringOverlay) { + Overlays.editOverlay(hoveringOverlay, { + backgroundColor: upColor + }); + hoveringOverlay = null; + } + if (overlay !== hoveringOverlay && overlay in overlayInfo) { + Overlays.editOverlay(overlay, { + backgroundColor: overColor + }); + hoveringOverlay = overlay; + } + } + } + return false; + }; + self.mouseReleaseEvent = function (event) { + var overlay = Overlays.getOverlayAtPoint({ + x: event.x, + y: event.y + }); + if (pressingOverlay !== null && pressingOverlay !== undefined) { + if (overlay === pressingOverlay) { + self.onSelectMenuItem(overlayInfo[overlay].name); + } + Overlays.editOverlay(pressingOverlay, { + backgroundColor: upColor + }); + pressingOverlay = null; + self.hide(); + } + }; + + self.setVisible = function (newVisible) { + if (newVisible !== visible) { + visible = newVisible; + for (var key in overlayInfo) { + Overlays.editOverlay(key, { + visible: newVisible + }); + } + } + }; + self.show = function () { + self.setVisible(true); + }; + self.hide = function () { + self.setVisible(false); + }; + + function cleanup() { + ContextOverlay.enabled = true; + for (var i = 0; i < overlays.length; i++) { + Overlays.deleteOverlay(overlays[i]); + } + Controller.mousePressEvent.disconnect(self.mousePressEvent); + Controller.mouseMoveEvent.disconnect(self.mouseMoveEvent); + Controller.mouseReleaseEvent.disconnect(self.mouseReleaseEvent); + + Entities.canRezChanged.disconnect(checkEditPermissionsAndUpdate); + Entities.canRezTmpChanged.disconnect(checkEditPermissionsAndUpdate); + Entities.canRezCertifiedChanged.disconnect(checkEditPermissionsAndUpdate); + Entities.canRezTmpCertifiedChanged.disconnect(checkEditPermissionsAndUpdate); + } + + Controller.mousePressEvent.connect(self.mousePressEvent); + Controller.mouseMoveEvent.connect(self.mouseMoveEvent); + Controller.mouseReleaseEvent.connect(self.mouseReleaseEvent); + Script.scriptEnding.connect(cleanup); + + return this; +}; + +function whenPressed(fn) { + return function(value) { + if (value > 0) { + fn(); + } + }; +} + +function whenReleased(fn) { + return function(value) { + if (value === 0) { + fn(); + } + }; +} + +var isOnMacPlatform = Controller.getValue(Controller.Hardware.Application.PlatformMac); + +var mapping = Controller.newMapping(CONTROLLER_MAPPING_NAME); +if (isOnMacPlatform) { + mapping.from([Controller.Hardware.Keyboard.Backspace]).to(deleteKey); +} else { + mapping.from([Controller.Hardware.Keyboard.Delete]).to(deleteKey); +} +mapping.from([Controller.Hardware.Keyboard.T]).to(toggleKey); +mapping.from([Controller.Hardware.Keyboard.F]).to(focusKey); +mapping.from([Controller.Hardware.Keyboard.G]).to(gridKey); +mapping.from([Controller.Hardware.Keyboard.X]) + .when([Controller.Hardware.Keyboard.Control]) + .to(whenReleased(function() { selectionManager.cutSelectedEntities() })); +mapping.from([Controller.Hardware.Keyboard.C]) + .when([Controller.Hardware.Keyboard.Control]) + .to(whenReleased(function() { selectionManager.copySelectedEntities() })); +mapping.from([Controller.Hardware.Keyboard.V]) + .when([Controller.Hardware.Keyboard.Control]) + .to(whenReleased(function() { selectionManager.pasteEntities() })); +mapping.from([Controller.Hardware.Keyboard.D]) + .when([Controller.Hardware.Keyboard.Control]) + .to(whenReleased(function() { selectionManager.duplicateSelection() })); + +// Bind undo to ctrl-shift-z to maintain backwards-compatibility +mapping.from([Controller.Hardware.Keyboard.Z]) + .when([Controller.Hardware.Keyboard.Control, Controller.Hardware.Keyboard.Shift]) + .to(whenPressed(function() { undoHistory.redo() })); + + +mapping.from([Controller.Hardware.Keyboard.P]) + .when([Controller.Hardware.Keyboard.Control, Controller.Hardware.Keyboard.Shift]) + .to(whenReleased(function() { unparentSelectedEntities(); })); + +mapping.from([Controller.Hardware.Keyboard.P]) + .when([Controller.Hardware.Keyboard.Control, !Controller.Hardware.Keyboard.Shift]) + .to(whenReleased(function() { parentSelectedEntities(); })); + +keyUpEventFromUIWindow = function(keyUpEvent) { + var WANT_DEBUG_MISSING_SHORTCUTS = false; + + var pressedValue = 0.0; + + if ((!isOnMacPlatform && keyUpEvent.keyCodeString === "Delete") + || (isOnMacPlatform && keyUpEvent.keyCodeString === "Backspace")) { + + deleteKey(pressedValue); + } else if (keyUpEvent.keyCodeString === "T") { + toggleKey(pressedValue); + } else if (keyUpEvent.keyCodeString === "F") { + focusKey(pressedValue); + } else if (keyUpEvent.keyCodeString === "G") { + gridKey(pressedValue); + } else if (keyUpEvent.controlKey && keyUpEvent.keyCodeString === "X") { + selectionManager.cutSelectedEntities(); + } else if (keyUpEvent.controlKey && keyUpEvent.keyCodeString === "C") { + selectionManager.copySelectedEntities(); + } else if (keyUpEvent.controlKey && keyUpEvent.keyCodeString === "V") { + selectionManager.pasteEntities(); + } else if (keyUpEvent.controlKey && keyUpEvent.keyCodeString === "D") { + selectionManager.duplicateSelection(); + } else if (!isOnMacPlatform && keyUpEvent.controlKey && !keyUpEvent.shiftKey && keyUpEvent.keyCodeString === "Z") { + undoHistory.undo(); // undo is only handled via handleMenuItem on Mac + } else if (keyUpEvent.controlKey && !keyUpEvent.shiftKey && keyUpEvent.keyCodeString === "P") { + parentSelectedEntities(); + } else if (keyUpEvent.controlKey && keyUpEvent.shiftKey && keyUpEvent.keyCodeString === "P") { + unparentSelectedEntities(); + } else if (!isOnMacPlatform && + ((keyUpEvent.controlKey && keyUpEvent.shiftKey && keyUpEvent.keyCodeString === "Z") || + (keyUpEvent.controlKey && keyUpEvent.keyCodeString === "Y"))) { + undoHistory.redo(); // redo is only handled via handleMenuItem on Mac + } else if (WANT_DEBUG_MISSING_SHORTCUTS) { + console.warn("unhandled key event: " + JSON.stringify(keyUpEvent)) + } +}; + +var propertyMenu = new PopupMenu(); + +propertyMenu.onSelectMenuItem = function (name) { + + if (propertyMenu.marketplaceID) { + showMarketplace(propertyMenu.marketplaceID); + } +}; + +var showMenuItem = propertyMenu.addMenuItem("Show in Marketplace"); + +var propertiesTool = new PropertiesTool(); + +selectionDisplay.onSpaceModeChange = function(spaceMode) { + entityListTool.setSpaceMode(spaceMode); + propertiesTool.setSpaceMode(spaceMode); +}; + +function getExistingZoneList() { + var center = {"x": 0, "y": 0, "z": 0}; + var existingZoneIDs = Entities.findEntitiesByType("Zone", center, 17000); + var listExistingZones = []; + var thisZone = {}; + var properties; + for (var k = 0; k < existingZoneIDs.length; k++) { + properties = Entities.getEntityProperties(existingZoneIDs[k], ["name"]); + thisZone = { + "id": existingZoneIDs[k], + "name": properties.name + }; + listExistingZones.push(thisZone); + } + return listExistingZones; +} + +}()); // END LOCAL_SCOPE From 6357dd91f5b51626fa961273b683ec58f05edfea Mon Sep 17 00:00:00 2001 From: Alezia Kurdis <60075796+AleziaKurdis@users.noreply.github.com> Date: Sat, 9 May 2020 02:50:16 -0400 Subject: [PATCH 086/160] Fix EOL from Windows to Unix Fix EOL from Windows to Unix --- scripts/system/create/edit.js | 5818 ++++++++++++++++----------------- 1 file changed, 2909 insertions(+), 2909 deletions(-) diff --git a/scripts/system/create/edit.js b/scripts/system/create/edit.js index ddf0c3fa2f..55461c33a0 100644 --- a/scripts/system/create/edit.js +++ b/scripts/system/create/edit.js @@ -1,2909 +1,2909 @@ -// edit.js -// -// Created by Brad Hefta-Gaub on 10/2/14. -// Persist toolbar by HRS 6/11/15. -// Copyright 2014 High Fidelity, Inc. -// Copyright 2020 Vircadia contributors. -// -// This script allows you to edit entities with a new UI/UX for mouse and trackpad based editing -// -// 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, 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, OverlaySystemWindow, - keyUpEventFromUIWindow:true */ - -(function() { // BEGIN LOCAL_SCOPE - -"use strict"; - -var EDIT_TOGGLE_BUTTON = "com.highfidelity.interface.system.editButton"; - -var CONTROLLER_MAPPING_NAME = "com.highfidelity.editMode"; - -Script.include([ - "../libraries/stringHelpers.js", - "../libraries/dataViewHelpers.js", - "../libraries/progressDialog.js", - "../libraries/ToolTip.js", - "../libraries/entityCameraTool.js", - "../libraries/utils.js", - "../libraries/entityIconOverlayManager.js", - "../libraries/gridTool.js", - "entityList/entityList.js", - "entitySelectionTool/entitySelectionTool.js" -]); - -var CreateWindow = Script.require('./modules/createWindow.js'); - -var TITLE_OFFSET = 60; -var CREATE_TOOLS_WIDTH = 490; -var MAX_DEFAULT_ENTITY_LIST_HEIGHT = 942; - -var DEFAULT_IMAGE = "https://hifi-content.s3.amazonaws.com/DomainContent/production/no-image.jpg"; - -var createToolsWindow = new CreateWindow( - Script.resolvePath("qml/EditTools.qml"), - 'Create Tools', - 'com.highfidelity.create.createToolsWindow', - function () { - var windowHeight = Window.innerHeight - TITLE_OFFSET; - if (windowHeight > MAX_DEFAULT_ENTITY_LIST_HEIGHT) { - windowHeight = MAX_DEFAULT_ENTITY_LIST_HEIGHT; - } - return { - size: { - x: CREATE_TOOLS_WIDTH, - y: windowHeight - }, - position: { - x: Window.x + Window.innerWidth - CREATE_TOOLS_WIDTH, - y: Window.y + TITLE_OFFSET - } - } - }, - false -); - -/** - * @description Returns true in case we should use the tablet version of the CreateApp - * @returns boolean - */ -var shouldUseEditTabletApp = function() { - return HMD.active || (!HMD.active && !Settings.getValue("desktopTabletBecomesToolbar", true)); -}; - - -var selectionDisplay = SelectionDisplay; -var selectionManager = SelectionManager; - -var PARTICLE_SYSTEM_URL = Script.resolvePath("assets/images/icon-particles.svg"); -var POINT_LIGHT_URL = Script.resolvePath("assets/images/icon-point-light.svg"); -var SPOT_LIGHT_URL = Script.resolvePath("assets/images/icon-spot-light.svg"); -var ZONE_URL = Script.resolvePath("assets/images/icon-zone.svg"); - -var entityIconOverlayManager = new EntityIconOverlayManager(['Light', 'ParticleEffect', 'Zone'], function(entityID) { - var properties = Entities.getEntityProperties(entityID, ['type', 'isSpotlight']); - if (properties.type === 'Light') { - return { - url: properties.isSpotlight ? SPOT_LIGHT_URL : POINT_LIGHT_URL, - }; - } else if (properties.type === 'Zone') { - return { - url: ZONE_URL, - }; - } else { - return { - url: PARTICLE_SYSTEM_URL, - }; - } -}); - -var cameraManager = new CameraManager(); - -var grid = new Grid(); -var gridTool = new GridTool({ - horizontalGrid: grid, - createToolsWindow: createToolsWindow, - shouldUseEditTabletApp: shouldUseEditTabletApp -}); -gridTool.setVisible(false); - -var EntityShapeVisualizer = Script.require('./modules/entityShapeVisualizer.js'); -var entityShapeVisualizer = new EntityShapeVisualizer(["Zone"]); - -var entityListTool = new EntityListTool(shouldUseEditTabletApp); - -selectionManager.addEventListener(function () { - selectionDisplay.updateHandles(); - entityIconOverlayManager.updatePositions(); - entityShapeVisualizer.setEntities(selectionManager.selections); -}); - -var DEGREES_TO_RADIANS = Math.PI / 180.0; -var RADIANS_TO_DEGREES = 180.0 / Math.PI; - -var MIN_ANGULAR_SIZE = 2; -var MAX_ANGULAR_SIZE = 45; -var allowLargeModels = true; -var allowSmallModels = true; - -var DEFAULT_DIMENSION = 0.20; - -var DEFAULT_DIMENSIONS = { - x: DEFAULT_DIMENSION, - y: DEFAULT_DIMENSION, - z: DEFAULT_DIMENSION -}; - -var DEFAULT_LIGHT_DIMENSIONS = Vec3.multiply(20, DEFAULT_DIMENSIONS); - -var MENU_AUTO_FOCUS_ON_SELECT = "Auto Focus on Select"; -var MENU_EASE_ON_FOCUS = "Ease Orientation on Focus"; -var MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE = "Show Lights and Particle Systems in Create Mode"; -var MENU_SHOW_ZONES_IN_EDIT_MODE = "Show Zones in Create Mode"; - -var MENU_CREATE_ENTITIES_GRABBABLE = "Create Entities As Grabbable (except Zones, Particles, and Lights)"; -var MENU_ALLOW_SELECTION_LARGE = "Allow Selecting of Large Models"; -var MENU_ALLOW_SELECTION_SMALL = "Allow Selecting of Small Models"; -var MENU_ALLOW_SELECTION_LIGHTS = "Allow Selecting of Lights"; - -var SETTING_AUTO_FOCUS_ON_SELECT = "autoFocusOnSelect"; -var SETTING_EASE_ON_FOCUS = "cameraEaseOnFocus"; -var SETTING_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE = "showLightsAndParticlesInEditMode"; -var SETTING_SHOW_ZONES_IN_EDIT_MODE = "showZonesInEditMode"; - -var SETTING_EDIT_PREFIX = "Edit/"; - - -var CREATE_ENABLED_ICON = "icons/tablet-icons/edit-i.svg"; -var CREATE_DISABLED_ICON = "icons/tablet-icons/edit-disabled.svg"; - -// marketplace info, etc. not quite ready yet. -var SHOULD_SHOW_PROPERTY_MENU = false; -var INSUFFICIENT_PERMISSIONS_ERROR_MSG = "You do not have the necessary permissions to edit on this domain."; -var INSUFFICIENT_PERMISSIONS_IMPORT_ERROR_MSG = "You do not have the necessary permissions to place items on this domain."; - -var isActive = false; -var createButton = null; - -var IMPORTING_SVO_OVERLAY_WIDTH = 144; -var IMPORTING_SVO_OVERLAY_HEIGHT = 30; -var IMPORTING_SVO_OVERLAY_MARGIN = 5; -var IMPORTING_SVO_OVERLAY_LEFT_MARGIN = 34; -var importingSVOImageOverlay = Overlays.addOverlay("image", { - imageURL: Script.resolvePath("assets/images/hourglass.svg"), - width: 20, - height: 20, - alpha: 1.0, - x: Window.innerWidth - IMPORTING_SVO_OVERLAY_WIDTH, - y: Window.innerHeight - IMPORTING_SVO_OVERLAY_HEIGHT, - visible: false -}); -var importingSVOTextOverlay = Overlays.addOverlay("text", { - font: { - size: 14 - }, - text: "Importing SVO...", - leftMargin: IMPORTING_SVO_OVERLAY_LEFT_MARGIN, - x: Window.innerWidth - IMPORTING_SVO_OVERLAY_WIDTH - IMPORTING_SVO_OVERLAY_MARGIN, - y: Window.innerHeight - IMPORTING_SVO_OVERLAY_HEIGHT - IMPORTING_SVO_OVERLAY_MARGIN, - width: IMPORTING_SVO_OVERLAY_WIDTH, - height: IMPORTING_SVO_OVERLAY_HEIGHT, - backgroundColor: { - red: 80, - green: 80, - blue: 80 - }, - backgroundAlpha: 0.7, - visible: false -}); - -var MARKETPLACE_URL = Account.metaverseServerURL + "/marketplace"; -var marketplaceWindow = new OverlayWebWindow({ - title: 'Marketplace', - source: "about:blank", - width: 900, - height: 700, - visible: false -}); - -function showMarketplace(marketplaceID) { - var url = MARKETPLACE_URL; - if (marketplaceID) { - url = url + "/items/" + marketplaceID; - } - marketplaceWindow.setURL(url); - marketplaceWindow.setVisible(true); - marketplaceWindow.raise(); - - UserActivityLogger.logAction("opened_marketplace"); -} - -function hideMarketplace() { - marketplaceWindow.setVisible(false); - marketplaceWindow.setURL("about:blank"); -} - -// function toggleMarketplace() { -// if (marketplaceWindow.visible) { -// hideMarketplace(); -// } else { -// showMarketplace(); -// } -// } - -function adjustPositionPerBoundingBox(position, direction, registration, dimensions, orientation) { - // Adjust the position such that the bounding box (registration, dimensions 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 GRABBABLE_ENTITIES_MENU_CATEGORY = "Edit"; - -// Handles any edit mode updates required when domains have switched -function checkEditPermissionsAndUpdate() { - if ((createButton === null) || (createButton === undefined)) { - //--EARLY EXIT--( nothing to safely update ) - return; - } - - var hasRezPermissions = (Entities.canRez() || Entities.canRezTmp() || Entities.canRezCertified() || Entities.canRezTmpCertified()); - createButton.editProperties({ - icon: (hasRezPermissions ? CREATE_ENABLED_ICON : CREATE_DISABLED_ICON), - captionColor: (hasRezPermissions ? "#ffffff" : "#888888"), - }); - - if (!hasRezPermissions && isActive) { - that.setActive(false); - tablet.gotoHomeScreen(); - } -} - -// Copies the properties in `b` into `a`. `a` will be modified. -function copyProperties(a, b) { - for (var key in b) { - a[key] = b[key]; - } - return a; -} - -const DEFAULT_DYNAMIC_PROPERTIES = { - dynamic: true, - damping: 0.39347, - angularDamping: 0.39347, - gravity: { x: 0, y: -9.8, z: 0 }, -}; - -const DEFAULT_NON_DYNAMIC_PROPERTIES = { - dynamic: false, - damping: 0, - angularDamping: 0, - gravity: { x: 0, y: 0, z: 0 }, -}; - -const DEFAULT_ENTITY_PROPERTIES = { - All: { - description: "", - rotation: { x: 0, y: 0, z: 0, w: 1 }, - collidesWith: "static,dynamic,kinematic,otherAvatar,myAvatar", - collisionSoundURL: "", - cloneable: false, - ignoreIK: true, - canCastShadow: true, - href: "", - script: "", - serverScripts:"", - velocity: { - x: 0, - y: 0, - z: 0 - }, - angularVelocity: { - x: 0, - y: 0, - z: 0 - }, - restitution: 0.5, - friction: 0.5, - density: 1000, - dynamic: false, - }, - Shape: { - shape: "Box", - dimensions: { x: 0.2, y: 0.2, z: 0.2 }, - color: { red: 0, green: 180, blue: 239 }, - }, - Text: { - text: "Text", - dimensions: { - x: 0.65, - y: 0.3, - z: 0.01 - }, - textColor: { red: 255, green: 255, blue: 255 }, - backgroundColor: { red: 0, green: 0, blue: 0 }, - lineHeight: 0.06, - faceCamera: false, - }, - Zone: { - dimensions: { - x: 10, - y: 10, - z: 10 - }, - flyingAllowed: true, - ghostingAllowed: true, - filter: "", - keyLightMode: "inherit", - keyLightColor: { red: 255, green: 255, blue: 255 }, - keyLight: { - intensity: 1.0, - direction: { - x: 0.0, - y: -0.707106769084930, // 45 degrees - z: 0.7071067690849304 - }, - castShadows: true - }, - ambientLightMode: "inherit", - ambientLight: { - ambientIntensity: 0.5, - ambientURL: "" - }, - hazeMode: "inherit", - haze: { - hazeRange: 1000, - hazeAltitudeEffect: false, - hazeBaseRef: 0, - hazeColor: { - red: 128, - green: 154, - blue: 179 - }, - hazeBackgroundBlend: 0, - hazeEnableGlare: false, - hazeGlareColor: { - red: 255, - green: 229, - blue: 179 - }, - }, - shapeType: "box", - bloomMode: "inherit", - avatarPriority: "inherit", - screenshare: "inherit", - }, - Model: { - collisionShape: "none", - compoundShapeURL: "", - animation: { - url: "", - running: false, - allowTranslation: false, - loop: true, - hold: false, - currentFrame: 0, - firstFrame: 0, - lastFrame: 100000, - fps: 30.0, - } - }, - Image: { - dimensions: { - x: 0.5385, - y: 0.2819, - z: 0.0092 - }, - shapeType: "box", - collisionless: true, - keepAspectRatio: false, - imageURL: DEFAULT_IMAGE - }, - Web: { - dimensions: { - x: 1.6, - y: 0.9, - z: 0.01 - }, - sourceUrl: "https://projectathena.io/", - dpi: 30, - }, - ParticleEffect: { - lifespan: 1.5, - maxParticles: 10, - textures: "https://content.highfidelity.com/DomainContent/production/Particles/wispy-smoke.png", - emitRate: 5.5, - emitSpeed: 0, - speedSpread: 0, - emitDimensions: { x: 0, y: 0, z: 0 }, - emitOrientation: { x: 0, y: 0, z: 0, w: 1 }, - emitterShouldTrail: true, - particleRadius: 0.25, - radiusStart: 0, - radiusSpread: 0, - particleColor: { - red: 255, - green: 255, - blue: 255 - }, - colorSpread: { - red: 0, - green: 0, - blue: 0 - }, - alpha: 0, - alphaStart: 1, - alphaSpread: 0, - emitAcceleration: { - x: 0, - y: 2.5, - z: 0 - }, - accelerationSpread: { - x: 0, - y: 0, - z: 0 - }, - particleSpin: 0, - spinSpread: 0, - rotateWithEntity: false, - polarStart: 0, - polarFinish: Math.PI, - azimuthStart: -Math.PI, - azimuthFinish: Math.PI - }, - Light: { - color: { red: 255, green: 255, blue: 255 }, - intensity: 5.0, - dimensions: DEFAULT_LIGHT_DIMENSIONS, - falloffRadius: 1.0, - isSpotlight: false, - exponent: 1.0, - cutoff: 75.0, - }, -}; - -var toolBar = (function () { - var EDIT_SETTING = "io.highfidelity.isEditing"; // for communication with other scripts - var that = {}, - toolBar, - activeButton = null, - systemToolbar = null, - dialogWindow = null, - tablet = null; - - function createNewEntity(requestedProperties) { - var dimensions = requestedProperties.dimensions ? requestedProperties.dimensions : DEFAULT_DIMENSIONS; - var position = getPositionToCreateEntity(); - var entityID = null; - - var properties = {}; - - copyProperties(properties, DEFAULT_ENTITY_PROPERTIES.All); - - var type = requestedProperties.type; - if (type === "Box" || type === "Sphere") { - copyProperties(properties, DEFAULT_ENTITY_PROPERTIES.Shape); - } else { - copyProperties(properties, DEFAULT_ENTITY_PROPERTIES[type]); - } - - // We apply the requested properties first so that they take priority over any default properties. - copyProperties(properties, requestedProperties); - - if (properties.dynamic) { - copyProperties(properties, DEFAULT_DYNAMIC_PROPERTIES); - } else { - copyProperties(properties, DEFAULT_NON_DYNAMIC_PROPERTIES); - } - - - if (position !== null && position !== undefined) { - 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", "Image", "Web", "Material"]; - 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 }; - registration = DEFAULT_REGISTRATION; - } - - var orientation = properties.orientation; - if (orientation === undefined) { - properties.orientation = MyAvatar.orientation; - var DEFAULT_ORIENTATION = properties.orientation; - orientation = DEFAULT_ORIENTATION; - } else { - // If the orientation is already defined, we perform the corresponding rotation assuming that - // our start referential is the avatar referential. - properties.orientation = Quat.multiply(MyAvatar.orientation, properties.orientation); - var DEFAULT_ORIENTATION = properties.orientation; - orientation = DEFAULT_ORIENTATION; - } - - position = adjustPositionPerBoundingBox(position, direction, registration, dimensions, orientation); - } - - position = grid.snapToSurface(grid.snapToGrid(position, false, dimensions), dimensions); - properties.position = position; - - if (!properties.grab) { - properties.grab = {}; - if (Menu.isOptionChecked(MENU_CREATE_ENTITIES_GRABBABLE) && - !(properties.type === "Zone" || properties.type === "Light" || properties.type === "ParticleEffect" || properties.type === "Web")) { - properties.grab.grabbable = true; - } else { - properties.grab.grabbable = false; - } - } - - if (type === "Model") { - properties.visible = false; - } - - entityID = Entities.addEntity(properties); - - var dimensionsCheckCallback = function(){ - 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", "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(false, this); - } else if (dimensionsCheckCount < MAX_DIMENSIONS_CHECKS) { - Script.setTimeout(dimensionsCheckFunction, DIMENSIONS_CHECK_INTERVAL); - } - }; - Script.setTimeout(dimensionsCheckFunction, DIMENSIONS_CHECK_INTERVAL); - } - } - // Make sure the entity is loaded before we try to figure out - // its dimensions. - var MAX_LOADED_CHECKS = 10; - var LOADED_CHECK_INTERVAL = 100; - var isLoadedCheckCount = 0; - var entityIsLoadedCheck = function() { - isLoadedCheckCount++; - if (isLoadedCheckCount === MAX_LOADED_CHECKS || Entities.isLoaded(entityID)) { - var naturalDimensions = Entities.getEntityProperties(entityID, "naturalDimensions").naturalDimensions - Entities.editEntity(entityID, { - visible: true, - dimensions: naturalDimensions - }) - dimensionsCheckCallback(); - return; - } - Script.setTimeout(entityIsLoadedCheck, LOADED_CHECK_INTERVAL); - } - Script.setTimeout(entityIsLoadedCheck, LOADED_CHECK_INTERVAL); - - SelectionManager.addEntity(entityID, false, this); - SelectionManager.saveProperties(); - pushCommandForSelections([{ - entityID: entityID, - properties: properties - }], [], true); - - } else { - Window.notifyEditError("Can't create " + properties.type + ": " + - properties.type + " would be out of bounds."); - } - - selectionManager.clearSelections(this); - entityListTool.sendUpdate(); - selectionManager.setSelections([entityID], this); - - Window.setFocus(); - - return entityID; - } - - function closeExistingDialogWindow() { - if (dialogWindow) { - dialogWindow.close(); - dialogWindow = null; - } - } - - function cleanup() { - that.setActive(false); - if (tablet) { - tablet.removeButton(activeButton); - } - if (systemToolbar) { - systemToolbar.removeButton(EDIT_TOGGLE_BUTTON); - } - } - - var buttonHandlers = {}; // only used to tablet mode - - function addButton(name, handler) { - buttonHandlers[name] = handler; - } - - var SHAPE_TYPE_NONE = 0; - var SHAPE_TYPE_SIMPLE_HULL = 1; - var SHAPE_TYPE_SIMPLE_COMPOUND = 2; - var SHAPE_TYPE_STATIC_MESH = 3; - var SHAPE_TYPE_BOX = 4; - var SHAPE_TYPE_SPHERE = 5; - var DYNAMIC_DEFAULT = false; - - var MATERIAL_MODE_UV = 0; - var MATERIAL_MODE_PROJECTED = 1; - - function handleNewModelDialogResult(result) { - if (result) { - var url = result.url; - var shapeType; - switch (result.collisionShapeIndex) { - case SHAPE_TYPE_SIMPLE_HULL: - shapeType = "simple-hull"; - break; - case SHAPE_TYPE_SIMPLE_COMPOUND: - shapeType = "simple-compound"; - break; - case SHAPE_TYPE_STATIC_MESH: - shapeType = "static-mesh"; - break; - case SHAPE_TYPE_BOX: - shapeType = "box"; - break; - case SHAPE_TYPE_SPHERE: - shapeType = "sphere"; - break; - default: - shapeType = "none"; - } - - var dynamic = result.dynamic !== null ? result.dynamic : DYNAMIC_DEFAULT; - if (shapeType === "static-mesh" && dynamic) { - // The prompt should prevent this case - print("Error: model cannot be both static mesh and dynamic. This should never happen."); - } else if (url) { - createNewEntity({ - type: "Model", - modelURL: url, - shapeType: shapeType, - grab: { - grabbable: result.grabbable - }, - dynamic: dynamic, - }); - } - } - } - - function handleNewMaterialDialogResult(result) { - if (result) { - var materialURL = result.textInput; - //var materialMappingMode; - //switch (result.comboBox) { - // case MATERIAL_MODE_PROJECTED: - // materialMappingMode = "projected"; - // break; - // default: - // shapeType = "uv"; - //} - var materialData = ""; - if (materialURL.startsWith("materialData")) { - materialData = JSON.stringify({ - "materials": {} - }); - } - - var DEFAULT_LAYERED_MATERIAL_PRIORITY = 1; - if (materialURL) { - createNewEntity({ - type: "Material", - materialURL: materialURL, - //materialMappingMode: materialMappingMode, - priority: DEFAULT_LAYERED_MATERIAL_PRIORITY, - materialData: materialData - }); - } - } - } - - function fromQml(message) { // messages are {method, params}, like json-rpc. See also sendToQml. - var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); - tablet.popFromStack(); - switch (message.method) { - case "newModelDialogAdd": - handleNewModelDialogResult(message.params); - closeExistingDialogWindow(); - break; - case "newModelDialogCancel": - closeExistingDialogWindow(); - break; - case "newEntityButtonClicked": - buttonHandlers[message.params.buttonName](); - break; - case "newMaterialDialogAdd": - handleNewMaterialDialogResult(message.params); - closeExistingDialogWindow(); - break; - case "newMaterialDialogCancel": - closeExistingDialogWindow(); - break; - } - } - - var entitiesToDelete = []; - var deletedEntityTimer = null; - var DELETE_ENTITY_TIMER_TIMEOUT = 100; - - function checkDeletedEntityAndUpdate(entityID) { - // Allow for multiple entity deletes before updating the entities selected. - entitiesToDelete.push(entityID); - if (deletedEntityTimer !== null) { - Script.clearTimeout(deletedEntityTimer); - } - deletedEntityTimer = Script.setTimeout(function () { - if (entitiesToDelete.length > 0) { - selectionManager.removeEntities(entitiesToDelete, this); - } - entityListTool.removeEntities(entitiesToDelete, selectionManager.selections); - entitiesToDelete = []; - deletedEntityTimer = null; - }, DELETE_ENTITY_TIMER_TIMEOUT); - } - - function initialize() { - Script.scriptEnding.connect(cleanup); - Window.domainChanged.connect(function () { - if (isActive) { - tablet.gotoHomeScreen(); - } - that.setActive(false); - that.clearEntityList(); - checkEditPermissionsAndUpdate(); - }); - - HMD.displayModeChanged.connect(function() { - if (isActive) { - tablet.gotoHomeScreen(); - } - that.setActive(false); - }); - - Entities.canAdjustLocksChanged.connect(function (canAdjustLocks) { - if (isActive && !canAdjustLocks) { - that.setActive(false); - } - checkEditPermissionsAndUpdate(); - }); - - Entities.canRezChanged.connect(checkEditPermissionsAndUpdate); - Entities.canRezTmpChanged.connect(checkEditPermissionsAndUpdate); - Entities.canRezCertifiedChanged.connect(checkEditPermissionsAndUpdate); - Entities.canRezTmpCertifiedChanged.connect(checkEditPermissionsAndUpdate); - var hasRezPermissions = (Entities.canRez() || Entities.canRezTmp() || Entities.canRezCertified() || Entities.canRezTmpCertified()); - - Entities.deletingEntity.connect(checkDeletedEntityAndUpdate); - - var createButtonIconRsrc = (hasRezPermissions ? CREATE_ENABLED_ICON : CREATE_DISABLED_ICON); - tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); - activeButton = tablet.addButton({ - captionColor: hasRezPermissions ? "#ffffff" : "#888888", - icon: createButtonIconRsrc, - activeIcon: "icons/tablet-icons/edit-a.svg", - text: "CREATE", - sortOrder: 10 - }); - createButton = activeButton; - tablet.screenChanged.connect(function (type, url) { - var isGoingToHomescreenOnDesktop = (!shouldUseEditTabletApp() && - (url === 'hifi/tablet/TabletHome.qml' || url === '')); - if (isActive && (type !== "QML" || url !== Script.resolvePath("qml/Edit.qml")) && !isGoingToHomescreenOnDesktop) { - that.setActive(false); - } - }); - tablet.fromQml.connect(fromQml); - createToolsWindow.fromQml.addListener(fromQml); - - createButton.clicked.connect(function() { - if ( ! (Entities.canRez() || Entities.canRezTmp() || Entities.canRezCertified() || Entities.canRezTmpCertified()) ) { - Window.notifyEditError(INSUFFICIENT_PERMISSIONS_ERROR_MSG); - return; - } - - that.toggle(); - }); - - addButton("importEntitiesButton", function() { - Window.browseChanged.connect(onFileOpenChanged); - Window.browseAsync("Select Model to Import", "", "*.json"); - }); - - addButton("openAssetBrowserButton", function() { - Window.showAssetServer(); - }); - function createNewEntityDialogButtonCallback(entityType) { - return function() { - if (shouldUseEditTabletApp()) { - // tablet version of new-model dialog - var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); - tablet.pushOntoStack(Script.resolvePath("qml/New" + entityType + "Dialog.qml")); - } else { - closeExistingDialogWindow(); - var qmlPath = Script.resolvePath("qml/New" + entityType + "Window.qml"); - var DIALOG_WINDOW_SIZE = { x: 500, y: 300 }; - dialogWindow = Desktop.createWindow(qmlPath, { - title: "New " + entityType + " Entity", - additionalFlags: Desktop.ALWAYS_ON_TOP | Desktop.CLOSE_BUTTON_HIDES, - presentationMode: Desktop.PresentationMode.NATIVE, - size: DIALOG_WINDOW_SIZE, - visible: true - }); - dialogWindow.fromQml.connect(fromQml); - } - }; - } - - addButton("newModelButton", createNewEntityDialogButtonCallback("Model")); - - addButton("newShapeButton", function () { - createNewEntity({ - type: "Shape", - shape: "Cube", - }); - }); - - addButton("newLightButton", function () { - createNewEntity({ - type: "Light", - }); - }); - - addButton("newTextButton", function () { - createNewEntity({ - type: "Text", - }); - }); - - addButton("newImageButton", function () { - createNewEntity({ - type: "Image", - }); - }); - - addButton("newWebButton", function () { - createNewEntity({ - type: "Web", - }); - }); - - addButton("newZoneButton", function () { - createNewEntity({ - type: "Zone", - }); - }); - - addButton("newParticleButton", function () { - createNewEntity({ - type: "ParticleEffect", - }); - }); - - addButton("newMaterialButton", createNewEntityDialogButtonCallback("Material")); - - var deactivateCreateIfDesktopWindowsHidden = function() { - if (!shouldUseEditTabletApp() && !entityListTool.isVisible() && !createToolsWindow.isVisible()) { - that.setActive(false); - } - }; - entityListTool.interactiveWindowHidden.addListener(this, deactivateCreateIfDesktopWindowsHidden); - createToolsWindow.interactiveWindowHidden.addListener(this, deactivateCreateIfDesktopWindowsHidden); - - that.setActive(false); - } - - that.clearEntityList = function () { - entityListTool.clearEntityList(); - }; - - that.toggle = function () { - that.setActive(!isActive); - if (!isActive) { - tablet.gotoHomeScreen(); - } - }; - - that.setActive = function (active) { - ContextOverlay.enabled = !active; - Settings.setValue(EDIT_SETTING, active); - if (active) { - Controller.captureEntityClickEvents(); - } else { - Controller.releaseEntityClickEvents(); - - closeExistingDialogWindow(); - } - if (active === isActive) { - return; - } - if (active && !Entities.canRez() && !Entities.canRezTmp() && !Entities.canRezCertified() && !Entities.canRezTmpCertified()) { - Window.notifyEditError(INSUFFICIENT_PERMISSIONS_ERROR_MSG); - return; - } - Messages.sendLocalMessage("edit-events", JSON.stringify({ - enabled: active - })); - isActive = active; - activeButton.editProperties({isActive: isActive}); - undoHistory.setEnabled(isActive); - - var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); - - if (!isActive) { - entityListTool.setVisible(false); - gridTool.setVisible(false); - grid.setEnabled(false); - propertiesTool.setVisible(false); - selectionManager.clearSelections(this); - cameraManager.disable(); - selectionDisplay.disableTriggerMapping(); - tablet.landscape = false; - Controller.disableMapping(CONTROLLER_MAPPING_NAME); - } else { - if (shouldUseEditTabletApp()) { - tablet.loadQMLSource(Script.resolvePath("qml/Edit.qml"), true); - } else { - // make other apps inactive while in desktop mode - tablet.gotoHomeScreen(); - } - UserActivityLogger.enabledEdit(); - entityListTool.setVisible(true); - entityListTool.sendUpdate(); - gridTool.setVisible(true); - grid.setEnabled(true); - propertiesTool.setVisible(true); - selectionDisplay.enableTriggerMapping(); - print("starting tablet in landscape mode"); - tablet.landscape = true; - Controller.enableMapping(CONTROLLER_MAPPING_NAME); - // 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(); - } - entityIconOverlayManager.setVisible(isActive && Menu.isOptionChecked(MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE)); - Entities.setDrawZoneBoundaries(isActive && Menu.isOptionChecked(MENU_SHOW_ZONES_IN_EDIT_MODE)); - }; - - initialize(); - return that; -})(); - -var selectedEntityID; -var orientation; -var intersection; - - -function rayPlaneIntersection(pickRay, point, normal) { // - // - // This version of the test returns the intersection of a line with a plane - // - var collides = Vec3.dot(pickRay.direction, normal); - - var d = -Vec3.dot(point, normal); - var t = -(Vec3.dot(pickRay.origin, normal) + d) / collides; - - return Vec3.sum(pickRay.origin, Vec3.multiply(pickRay.direction, t)); -} - -function rayPlaneIntersection2(pickRay, point, normal) { - // - // This version of the test returns false if the ray is directed away from the plane - // - var collides = Vec3.dot(pickRay.direction, normal); - var d = -Vec3.dot(point, normal); - var t = -(Vec3.dot(pickRay.origin, normal) + d) / collides; - if (t < 0.0) { - return false; - } else { - return Vec3.sum(pickRay.origin, Vec3.multiply(pickRay.direction, t)); - } -} - -function findClickedEntity(event) { - var pickZones = event.isControl; - - if (pickZones) { - Entities.setZonesArePickable(true); - } - - var pickRay = Camera.computePickRay(event.x, event.y); - var tabletIDs = getMainTabletIDs(); - if (tabletIDs.length > 0) { - var overlayResult = Overlays.findRayIntersection(pickRay, true, tabletIDs); - if (overlayResult.intersects) { - return null; - } - } - - var entityResult = Entities.findRayIntersection(pickRay, true); // want precision picking - var iconResult = entityIconOverlayManager.findRayIntersection(pickRay); - iconResult.accurate = true; - - if (pickZones) { - Entities.setZonesArePickable(false); - } - - var result; - - if (iconResult.intersects) { - result = iconResult; - } else if (entityResult.intersects) { - result = entityResult; - } else { - return null; - } - - if (!result.accurate) { - return null; - } - - var foundEntity = result.entityID; - return { - pickRay: pickRay, - entityID: foundEntity, - intersection: result.intersection - }; -} - -// Handles selections on overlays while in edit mode by querying entities from -// entityIconOverlayManager. -function handleOverlaySelectionToolUpdates(channel, message, sender) { - var wantDebug = false; - if (sender !== MyAvatar.sessionUUID || channel !== 'entityToolUpdates') - return; - - var data = JSON.parse(message); - - if (data.method === "selectOverlay") { - if (!selectionDisplay.triggered() || selectionDisplay.triggeredHand === data.hand) { - if (wantDebug) { - print("setting selection to overlay " + data.overlayID); - } - var entity = entityIconOverlayManager.findEntity(data.overlayID); - - if (entity !== null) { - selectionManager.setSelections([entity], this); - } - } - } -} - -function handleMessagesReceived(channel, message, sender) { - switch( channel ){ - case 'entityToolUpdates': { - handleOverlaySelectionToolUpdates( channel, message, sender ); - break; - } - default: { - return; - } - } -} - -Messages.subscribe("entityToolUpdates"); -Messages.messageReceived.connect(handleMessagesReceived); - -var mouseHasMovedSincePress = false; -var mousePressStartTime = 0; -var mousePressStartPosition = { - x: 0, - y: 0 -}; -var mouseDown = false; - -function mousePressEvent(event) { - mouseDown = true; - mousePressStartPosition = { - x: event.x, - y: event.y - }; - mousePressStartTime = Date.now(); - mouseHasMovedSincePress = false; - mouseCapturedByTool = false; - - if (propertyMenu.mousePressEvent(event) || progressDialog.mousePressEvent(event)) { - mouseCapturedByTool = true; - return; - } - if (isActive) { - if (cameraManager.mousePressEvent(event) || selectionDisplay.mousePressEvent(event)) { - // Event handled; do nothing. - return; - } - } -} - -var mouseCapturedByTool = false; -var lastMousePosition = null; -var CLICK_TIME_THRESHOLD = 500 * 1000; // 500 ms -var CLICK_MOVE_DISTANCE_THRESHOLD = 20; -var IDLE_MOUSE_TIMEOUT = 200; - -var lastMouseMoveEvent = null; - -function mouseMoveEventBuffered(event) { - lastMouseMoveEvent = event; -} - -function mouseMove(event) { - if (mouseDown && !mouseHasMovedSincePress) { - var timeSincePressMicro = Date.now() - mousePressStartTime; - - var dX = mousePressStartPosition.x - event.x; - var dY = mousePressStartPosition.y - event.y; - var sqDist = (dX * dX) + (dY * dY); - - // If less than CLICK_TIME_THRESHOLD has passed since the mouse click AND the mouse has moved - // less than CLICK_MOVE_DISTANCE_THRESHOLD distance, then don't register this as a mouse move - // yet. The goal is to provide mouse clicks that are more lenient to small movements. - if (timeSincePressMicro < CLICK_TIME_THRESHOLD && sqDist < CLICK_MOVE_DISTANCE_THRESHOLD) { - return; - } - mouseHasMovedSincePress = true; - } - - if (!isActive) { - return; - } - - // allow the selectionDisplay and cameraManager to handle the event first, if it doesn't handle it, then do our own thing - if (selectionDisplay.mouseMoveEvent(event) || propertyMenu.mouseMoveEvent(event) || cameraManager.mouseMoveEvent(event)) { - return; - } - - lastMousePosition = { - x: event.x, - y: event.y - }; -} - -function mouseReleaseEvent(event) { - mouseDown = false; - - if (lastMouseMoveEvent) { - mouseMove(lastMouseMoveEvent); - lastMouseMoveEvent = null; - } - if (propertyMenu.mouseReleaseEvent(event)) { - return true; - } - if (isActive && selectionManager.hasSelection()) { - tooltip.show(false); - } - if (mouseCapturedByTool) { - - return; - } - - cameraManager.mouseReleaseEvent(event); - - if (!mouseHasMovedSincePress) { - mouseClickEvent(event); - } -} - -function wasTabletOrEditHandleClicked(event) { - var rayPick = Camera.computePickRay(event.x, event.y); - var result = Overlays.findRayIntersection(rayPick, true); - if (result.intersects) { - var overlayID = result.overlayID; - var tabletIDs = getMainTabletIDs(); - if (tabletIDs.indexOf(overlayID) >= 0) { - return true; - } else if (selectionDisplay.isEditHandle(overlayID)) { - return true; - } - } - return false; -} - -function mouseClickEvent(event) { - var wantDebug = false; - var result, properties, tabletClicked; - if (isActive && event.isLeftButton) { - result = findClickedEntity(event); - var tabletOrEditHandleClicked = wasTabletOrEditHandleClicked(event); - if (tabletOrEditHandleClicked) { - return; - } - - if (result === null || result === undefined) { - if (!event.isShifted) { - selectionManager.clearSelections(this); - } - return; - } - toolBar.setActive(true); - var pickRay = result.pickRay; - var foundEntity = result.entityID; - if (HMD.tabletID && foundEntity === HMD.tabletID) { - return; - } - properties = Entities.getEntityProperties(foundEntity); - var halfDiagonal = Vec3.length(properties.dimensions) / 2.0; - - if (wantDebug) { - print("Checking properties: " + properties.id + " " + " - Half Diagonal:" + halfDiagonal); - } - // P P - Model - // /| A - Palm - // / | d B - unit vector toward tip - // / | X - base of the perpendicular line - // A---X----->B d - distance fom axis - // x x - distance from A - // - // |X-A| = (P-A).B - // X === A + ((P-A).B)B - // d = |P-X| - - var A = pickRay.origin; - var B = Vec3.normalize(pickRay.direction); - var P = properties.position; - - var x = Vec3.dot(Vec3.subtract(P, A), B); - - var angularSize = 2 * Math.atan(halfDiagonal / Vec3.distance(Camera.getPosition(), properties.position)) * - 180 / Math.PI; - - var sizeOK = (allowLargeModels || angularSize < MAX_ANGULAR_SIZE) && - (allowSmallModels || angularSize > MIN_ANGULAR_SIZE); - - if (0 < x && sizeOK) { - selectedEntityID = foundEntity; - orientation = MyAvatar.orientation; - intersection = rayPlaneIntersection(pickRay, P, Quat.getForward(orientation)); - - if (!event.isShifted) { - selectionManager.setSelections([foundEntity], this); - } else { - selectionManager.addEntity(foundEntity, true, this); - } - selectionManager.saveProperties(); - - if (wantDebug) { - print("Model selected: " + foundEntity); - } - selectionDisplay.select(selectedEntityID, event); - - if (Menu.isOptionChecked(MENU_AUTO_FOCUS_ON_SELECT)) { - cameraManager.enable(); - cameraManager.focus(selectionManager.worldPosition, - selectionManager.worldDimensions, - Menu.isOptionChecked(MENU_EASE_ON_FOCUS)); - } - } - } else if (event.isRightButton) { - result = findClickedEntity(event); - if (result) { - if (SHOULD_SHOW_PROPERTY_MENU !== true) { - return; - } - properties = Entities.getEntityProperties(result.entityID); - if (properties.marketplaceID) { - propertyMenu.marketplaceID = properties.marketplaceID; - propertyMenu.updateMenuItemText(showMenuItem, "Show in Marketplace"); - } else { - propertyMenu.marketplaceID = null; - propertyMenu.updateMenuItemText(showMenuItem, "No marketplace info"); - } - propertyMenu.setPosition(event.x, event.y); - propertyMenu.show(); - } else { - propertyMenu.hide(); - } - } -} - -Controller.mousePressEvent.connect(mousePressEvent); -Controller.mouseMoveEvent.connect(mouseMoveEventBuffered); -Controller.mouseReleaseEvent.connect(mouseReleaseEvent); - - -// In order for editVoxels and editModels to play nice together, they each check to see if a "delete" menu item already -// exists. If it doesn't they add it. If it does they don't. They also only delete the menu item if they were the one that -// added it. -var modelMenuAddedDelete = false; -var originalLightsArePickable = Entities.getLightsArePickable(); - -function setupModelMenus() { - // adj our menuitems - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: "Undo", - shortcutKey: 'Ctrl+Z', - position: 0, - }); - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: "Redo", - shortcutKey: 'Ctrl+Y', - position: 1, - }); - - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: "Entities", - isSeparator: true - }); - if (!Menu.menuItemExists("Edit", "Delete")) { - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: "Delete", - shortcutKeyEvent: { - text: "delete" - }, - afterItem: "Entities", - }); - modelMenuAddedDelete = true; - } - - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: "Parent Entity to Last", - afterItem: "Entities" - }); - - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: "Unparent Entity", - afterItem: "Parent Entity to Last" - }); - - Menu.addMenuItem({ - menuName: GRABBABLE_ENTITIES_MENU_CATEGORY, - menuItemName: MENU_CREATE_ENTITIES_GRABBABLE, - afterItem: "Unparent Entity", - isCheckable: true, - isChecked: Settings.getValue(SETTING_EDIT_PREFIX + MENU_CREATE_ENTITIES_GRABBABLE, true) - }); - - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: MENU_ALLOW_SELECTION_LARGE, - afterItem: MENU_CREATE_ENTITIES_GRABBABLE, - isCheckable: true, - isChecked: Settings.getValue(SETTING_EDIT_PREFIX + MENU_ALLOW_SELECTION_LARGE, true) - }); - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: MENU_ALLOW_SELECTION_SMALL, - afterItem: MENU_ALLOW_SELECTION_LARGE, - isCheckable: true, - isChecked: Settings.getValue(SETTING_EDIT_PREFIX + MENU_ALLOW_SELECTION_SMALL, true) - }); - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: MENU_ALLOW_SELECTION_LIGHTS, - afterItem: MENU_ALLOW_SELECTION_SMALL, - isCheckable: true, - isChecked: Settings.getValue(SETTING_EDIT_PREFIX + MENU_ALLOW_SELECTION_LIGHTS, false) - }); - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: "Select All Entities In Box", - afterItem: "Allow Selecting of Lights" - }); - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: "Select All Entities Touching Box", - afterItem: "Select All Entities In Box" - }); - - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: "Export Entities", - afterItem: "Entities" - }); - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: "Import Entities", - afterItem: "Export Entities" - }); - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: "Import Entities from URL", - afterItem: "Import Entities" - }); - - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: MENU_AUTO_FOCUS_ON_SELECT, - isCheckable: true, - isChecked: Settings.getValue(SETTING_AUTO_FOCUS_ON_SELECT) === "true" - }); - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: MENU_EASE_ON_FOCUS, - afterItem: MENU_AUTO_FOCUS_ON_SELECT, - isCheckable: true, - isChecked: Settings.getValue(SETTING_EASE_ON_FOCUS) === "true" - }); - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE, - afterItem: MENU_EASE_ON_FOCUS, - isCheckable: true, - isChecked: Settings.getValue(SETTING_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE) !== "false" - }); - Menu.addMenuItem({ - menuName: "Edit", - menuItemName: MENU_SHOW_ZONES_IN_EDIT_MODE, - afterItem: MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE, - isCheckable: true, - isChecked: Settings.getValue(SETTING_SHOW_ZONES_IN_EDIT_MODE) !== "false" - }); - - Entities.setLightsArePickable(false); -} - -setupModelMenus(); // do this when first running our script. - -function cleanupModelMenus() { - Menu.removeMenuItem("Edit", "Undo"); - Menu.removeMenuItem("Edit", "Redo"); - - Menu.removeSeparator("Edit", "Entities"); - if (modelMenuAddedDelete) { - // delete our menuitems - Menu.removeMenuItem("Edit", "Delete"); - } - - Menu.removeMenuItem("Edit", "Parent Entity to Last"); - Menu.removeMenuItem("Edit", "Unparent Entity"); - Menu.removeMenuItem("Edit", "Allow Selecting of Large Models"); - Menu.removeMenuItem("Edit", "Allow Selecting of Small Models"); - Menu.removeMenuItem("Edit", "Allow Selecting of Lights"); - Menu.removeMenuItem("Edit", "Select All Entities In Box"); - Menu.removeMenuItem("Edit", "Select All Entities Touching Box"); - - Menu.removeMenuItem("Edit", "Export Entities"); - Menu.removeMenuItem("Edit", "Import Entities"); - Menu.removeMenuItem("Edit", "Import Entities from URL"); - - Menu.removeMenuItem("Edit", MENU_AUTO_FOCUS_ON_SELECT); - Menu.removeMenuItem("Edit", MENU_EASE_ON_FOCUS); - Menu.removeMenuItem("Edit", MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE); - Menu.removeMenuItem("Edit", MENU_SHOW_ZONES_IN_EDIT_MODE); - Menu.removeMenuItem("Edit", MENU_CREATE_ENTITIES_GRABBABLE); -} - -Script.scriptEnding.connect(function () { - toolBar.setActive(false); - Settings.setValue(SETTING_AUTO_FOCUS_ON_SELECT, Menu.isOptionChecked(MENU_AUTO_FOCUS_ON_SELECT)); - Settings.setValue(SETTING_EASE_ON_FOCUS, Menu.isOptionChecked(MENU_EASE_ON_FOCUS)); - Settings.setValue(SETTING_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE, Menu.isOptionChecked(MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE)); - Settings.setValue(SETTING_SHOW_ZONES_IN_EDIT_MODE, Menu.isOptionChecked(MENU_SHOW_ZONES_IN_EDIT_MODE)); - - Settings.setValue(SETTING_EDIT_PREFIX + MENU_ALLOW_SELECTION_LARGE, Menu.isOptionChecked(MENU_ALLOW_SELECTION_LARGE)); - Settings.setValue(SETTING_EDIT_PREFIX + MENU_ALLOW_SELECTION_SMALL, Menu.isOptionChecked(MENU_ALLOW_SELECTION_SMALL)); - Settings.setValue(SETTING_EDIT_PREFIX + MENU_ALLOW_SELECTION_LIGHTS, Menu.isOptionChecked(MENU_ALLOW_SELECTION_LIGHTS)); - - - progressDialog.cleanup(); - cleanupModelMenus(); - tooltip.cleanup(); - selectionDisplay.cleanup(); - entityShapeVisualizer.cleanup(); - Entities.setLightsArePickable(originalLightsArePickable); - - Overlays.deleteOverlay(importingSVOImageOverlay); - Overlays.deleteOverlay(importingSVOTextOverlay); - - Controller.keyReleaseEvent.disconnect(keyReleaseEvent); - Controller.keyPressEvent.disconnect(keyPressEvent); - - Controller.mousePressEvent.disconnect(mousePressEvent); - Controller.mouseMoveEvent.disconnect(mouseMoveEventBuffered); - Controller.mouseReleaseEvent.disconnect(mouseReleaseEvent); - - Messages.messageReceived.disconnect(handleMessagesReceived); - Messages.unsubscribe("entityToolUpdates"); - createButton = null; -}); - -var lastOrientation = null; -var lastPosition = null; - -// Do some stuff regularly, like check for placement of various overlays -Script.update.connect(function (deltaTime) { - progressDialog.move(); - selectionDisplay.checkControllerMove(); - var dOrientation = Math.abs(Quat.dot(Camera.orientation, lastOrientation) - 1); - var dPosition = Vec3.distance(Camera.position, lastPosition); - if (dOrientation > 0.001 || dPosition > 0.001) { - propertyMenu.hide(); - lastOrientation = Camera.orientation; - lastPosition = Camera.position; - } - if (lastMouseMoveEvent) { - mouseMove(lastMouseMoveEvent); - lastMouseMoveEvent = null; - } -}); - -function insideBox(center, dimensions, point) { - return (Math.abs(point.x - center.x) <= (dimensions.x / 2.0)) && - (Math.abs(point.y - center.y) <= (dimensions.y / 2.0)) && - (Math.abs(point.z - center.z) <= (dimensions.z / 2.0)); -} - -function selectAllEntitiesInCurrentSelectionBox(keepIfTouching) { - if (selectionManager.hasSelection()) { - // Get all entities touching the bounding box of the current selection - var boundingBoxCorner = Vec3.subtract(selectionManager.worldPosition, - Vec3.multiply(selectionManager.worldDimensions, 0.5)); - var entities = Entities.findEntitiesInBox(boundingBoxCorner, selectionManager.worldDimensions); - - if (!keepIfTouching) { - var isValid; - if (selectionManager.localPosition === null || selectionManager.localPosition === undefined) { - isValid = function (position) { - return insideBox(selectionManager.worldPosition, selectionManager.worldDimensions, position); - }; - } else { - isValid = function (position) { - var localPosition = Vec3.multiplyQbyV(Quat.inverse(selectionManager.localRotation), - Vec3.subtract(position, - selectionManager.localPosition)); - return insideBox(Vec3.ZERO, selectionManager.localDimensions, localPosition); - }; - } - for (var i = 0; i < entities.length; ++i) { - var properties = Entities.getEntityProperties(entities[i]); - if (!isValid(properties.position)) { - entities.splice(i, 1); - --i; - } - } - } - selectionManager.setSelections(entities, this); - } -} - -function sortSelectedEntities(selected) { - var sortedEntities = selected.slice(); - var begin = 0; - while (begin < sortedEntities.length) { - var elementRemoved = false; - var next = begin + 1; - while (next < sortedEntities.length) { - var beginID = sortedEntities[begin]; - var nextID = sortedEntities[next]; - - if (Entities.isChildOfParent(beginID, nextID)) { - sortedEntities[begin] = nextID; - sortedEntities[next] = beginID; - sortedEntities.splice(next, 1); - elementRemoved = true; - break; - } else if (Entities.isChildOfParent(nextID, beginID)) { - sortedEntities.splice(next, 1); - elementRemoved = true; - break; - } - next++; - } - if (!elementRemoved) { - begin++; - } - } - return sortedEntities; -} - -function recursiveDelete(entities, childrenList, deletedIDs, entityHostType) { - var wantDebug = false; - var entitiesLength = entities.length; - var initialPropertySets = Entities.getMultipleEntityProperties(entities); - var entityHostTypes = Entities.getMultipleEntityProperties(entities, 'entityHostType'); - for (var i = 0; i < entitiesLength; ++i) { - var entityID = entities[i]; - - if (entityHostTypes[i].entityHostType !== entityHostType) { - if (wantDebug) { - console.log("Skipping deletion of entity " + entityID + " with conflicting entityHostType: " + - entityHostTypes[i].entityHostType + ", expected: " + entityHostType); - } - continue; - } - - var children = Entities.getChildrenIDs(entityID); - var grandchildrenList = []; - recursiveDelete(children, grandchildrenList, deletedIDs, entityHostType); - childrenList.push({ - entityID: entityID, - properties: initialPropertySets[i], - children: grandchildrenList - }); - deletedIDs.push(entityID); - Entities.deleteEntity(entityID); - } -} - -function unparentSelectedEntities() { - if (SelectionManager.hasSelection()) { - var selectedEntities = selectionManager.selections; - var parentCheck = false; - - if (selectedEntities.length < 1) { - Window.notifyEditError("You must have an entity selected in order to unparent it."); - return; - } - selectedEntities.forEach(function (id, index) { - var parentId = Entities.getEntityProperties(id, ["parentID"]).parentID; - if (parentId !== null && parentId.length > 0 && parentId !== Uuid.NULL) { - parentCheck = true; - } - Entities.editEntity(id, {parentID: null}); - return true; - }); - if (parentCheck) { - if (selectedEntities.length > 1) { - Window.notify("Entities unparented"); - } else { - Window.notify("Entity unparented"); - } - } else { - if (selectedEntities.length > 1) { - Window.notify("Selected Entities have no parents"); - } else { - Window.notify("Selected Entity does not have a parent"); - } - } - } else { - Window.notifyEditError("You have nothing selected to unparent"); - } -} -function parentSelectedEntities() { - if (SelectionManager.hasSelection()) { - var selectedEntities = selectionManager.selections; - if (selectedEntities.length <= 1) { - Window.notifyEditError("You must have multiple entities selected in order to parent them"); - return; - } - var parentCheck = false; - var lastEntityId = selectedEntities[selectedEntities.length - 1]; - selectedEntities.forEach(function (id, index) { - if (lastEntityId !== id) { - var parentId = Entities.getEntityProperties(id, ["parentID"]).parentID; - if (parentId !== lastEntityId) { - parentCheck = true; - } - Entities.editEntity(id, {parentID: lastEntityId}); - } - }); - - if (parentCheck) { - Window.notify("Entities parented"); - } else { - Window.notify("Entities are already parented to last"); - } - } else { - Window.notifyEditError("You have nothing selected to parent"); - } -} -function deleteSelectedEntities() { - if (SelectionManager.hasSelection()) { - var deletedIDs = []; - - SelectionManager.saveProperties(); - var savedProperties = []; - var newSortedSelection = sortSelectedEntities(selectionManager.selections); - var entityHostTypes = Entities.getMultipleEntityProperties(newSortedSelection, 'entityHostType'); - for (var i = 0; i < newSortedSelection.length; ++i) { - var entityID = newSortedSelection[i]; - var initialProperties = SelectionManager.savedProperties[entityID]; - if (initialProperties.locked || - (initialProperties.avatarEntity && initialProperties.owningAvatarID !== MyAvatar.sessionUUID)) { - continue; - } - var children = Entities.getChildrenIDs(entityID); - var childList = []; - recursiveDelete(children, childList, deletedIDs, entityHostTypes[i].entityHostType); - savedProperties.push({ - entityID: entityID, - properties: initialProperties, - children: childList - }); - deletedIDs.push(entityID); - Entities.deleteEntity(entityID); - } - - if (savedProperties.length > 0) { - SelectionManager.clearSelections(this); - pushCommandForSelections([], savedProperties); - entityListTool.deleteEntities(deletedIDs); - } - } -} - -function toggleSelectedEntitiesLocked() { - if (SelectionManager.hasSelection()) { - var locked = !Entities.getEntityProperties(SelectionManager.selections[0], ["locked"]).locked; - for (var i = 0; i < selectionManager.selections.length; i++) { - var entityID = SelectionManager.selections[i]; - Entities.editEntity(entityID, { - locked: locked - }); - } - entityListTool.sendUpdate(); - selectionManager._update(false, this); - } -} - -function toggleSelectedEntitiesVisible() { - if (SelectionManager.hasSelection()) { - var visible = !Entities.getEntityProperties(SelectionManager.selections[0], ["visible"]).visible; - for (var i = 0; i < selectionManager.selections.length; i++) { - var entityID = SelectionManager.selections[i]; - Entities.editEntity(entityID, { - visible: visible - }); - } - entityListTool.sendUpdate(); - selectionManager._update(false, this); - } -} - -function onFileSaveChanged(filename) { - Window.saveFileChanged.disconnect(onFileSaveChanged); - if (filename !== "") { - var success = Clipboard.exportEntities(filename, selectionManager.selections); - if (!success) { - Window.notifyEditError("Export failed."); - } - } -} - -function onFileOpenChanged(filename) { - // disconnect the event, otherwise the requests will stack up - try { - // Not all calls to onFileOpenChanged() connect an event. - Window.browseChanged.disconnect(onFileOpenChanged); - } catch (e) { - // Ignore. - } - - var importURL = null; - if (filename !== "") { - importURL = filename; - if (!/^(http|https):\/\//.test(filename)) { - importURL = "file:///" + importURL; - } - } - if (importURL) { - if (!isActive && (Entities.canRez() && Entities.canRezTmp() && Entities.canRezCertified() && Entities.canRezTmpCertified())) { - toolBar.toggle(); - } - importSVO(importURL); - } -} - -function onPromptTextChanged(prompt) { - Window.promptTextChanged.disconnect(onPromptTextChanged); - if (prompt !== "") { - if (!isActive && (Entities.canRez() && Entities.canRezTmp() && Entities.canRezCertified() && Entities.canRezTmpCertified())) { - toolBar.toggle(); - } - importSVO(prompt); - } -} - -function handleMenuEvent(menuItem) { - if (menuItem === "Allow Selecting of Small Models") { - allowSmallModels = Menu.isOptionChecked("Allow Selecting of Small Models"); - } else if (menuItem === "Allow Selecting of Large Models") { - allowLargeModels = Menu.isOptionChecked("Allow Selecting of Large Models"); - } else if (menuItem === "Allow Selecting of Lights") { - Entities.setLightsArePickable(Menu.isOptionChecked("Allow Selecting of Lights")); - } else if (menuItem === "Delete") { - deleteSelectedEntities(); - } else if (menuItem === "Undo") { - undoHistory.undo(); - } else if (menuItem === "Redo") { - undoHistory.redo(); - } else if (menuItem === "Parent Entity to Last") { - parentSelectedEntities(); - } else if (menuItem === "Unparent Entity") { - unparentSelectedEntities(); - } else if (menuItem === "Export Entities") { - if (!selectionManager.hasSelection()) { - Window.notifyEditError("No entities have been selected."); - } else { - Window.saveFileChanged.connect(onFileSaveChanged); - Window.saveAsync("Select Where to Save", "", "*.json"); - } - } else if (menuItem === "Import Entities" || menuItem === "Import Entities from URL") { - if (menuItem === "Import Entities") { - Window.browseChanged.connect(onFileOpenChanged); - Window.browseAsync("Select Model to Import", "", "*.json"); - } else { - Window.promptTextChanged.connect(onPromptTextChanged); - Window.promptAsync("URL of SVO to import", ""); - } - } else if (menuItem === "Select All Entities In Box") { - selectAllEntitiesInCurrentSelectionBox(false); - } else if (menuItem === "Select All Entities Touching Box") { - selectAllEntitiesInCurrentSelectionBox(true); - } else if (menuItem === MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE) { - entityIconOverlayManager.setVisible(isActive && Menu.isOptionChecked(MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE)); - } else if (menuItem === MENU_SHOW_ZONES_IN_EDIT_MODE) { - Entities.setDrawZoneBoundaries(isActive && Menu.isOptionChecked(MENU_SHOW_ZONES_IN_EDIT_MODE)); - } else if (menuItem === MENU_CREATE_ENTITIES_GRABBABLE) { - Settings.setValue(SETTING_EDIT_PREFIX + menuItem, Menu.isOptionChecked(menuItem)); - } - tooltip.show(false); -} - -var HALF_TREE_SCALE = 16384; - -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 + delta)); - } else { - position = Vec3.sum(MyAvatar.position, Vec3.multiply(Quat.getForward(MyAvatar.orientation), CREATE_DISTANCE + delta)); - } - - if (position.x > HALF_TREE_SCALE || position.y > HALF_TREE_SCALE || position.z > HALF_TREE_SCALE) { - return null; - } - return position; -} - -function importSVO(importURL) { - if (!Entities.canRez() && !Entities.canRezTmp() && - !Entities.canRezCertified() && !Entities.canRezTmpCertified()) { - Window.notifyEditError(INSUFFICIENT_PERMISSIONS_IMPORT_ERROR_MSG); - return; - } - - Overlays.editOverlay(importingSVOTextOverlay, { - visible: true - }); - Overlays.editOverlay(importingSVOImageOverlay, { - visible: true - }); - - var success = Clipboard.importEntities(importURL); - - if (success) { - var VERY_LARGE = 10000; - var isLargeImport = Clipboard.getClipboardContentsLargestDimension() >= VERY_LARGE; - var position = Vec3.ZERO; - if (!isLargeImport) { - position = getPositionToCreateEntity(Clipboard.getClipboardContentsLargestDimension() / 2); - } - 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 deltaPosition = Vec3.ZERO; - var entityPositions = []; - var entityParentIDs = []; - - var propType = Entities.getEntityProperties(pastedEntityIDs[0], ["type"]).type; - var NO_ADJUST_ENTITY_TYPES = ["Zone", "Light", "ParticleEffect"]; - if (NO_ADJUST_ENTITY_TYPES.indexOf(propType) === -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. - for (var i = 0, length = pastedEntityIDs.length; i < length; i++) { - var curLoopEntityProps = Entities.getEntityProperties(pastedEntityIDs[i], ["position", "dimensions", - "registrationPoint", "rotation", "parentID"]); - var adjustedPosition = adjustPositionPerBoundingBox(targetPosition, targetDirection, - curLoopEntityProps.registrationPoint, curLoopEntityProps.dimensions, curLoopEntityProps.rotation); - var delta = Vec3.subtract(adjustedPosition, curLoopEntityProps.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] = curLoopEntityProps.position; - entityParentIDs[i] = curLoopEntityProps.parentID; - } - deltaPerpendicular = Vec3.multiply(1 / pastedEntityIDs.length, deltaPerpendicular); - deltaPosition = Vec3.sum(Vec3.multiply(deltaParallel, targetDirection), deltaPerpendicular); - } - - if (grid.getSnapToGrid()) { - var firstEntityProps = Entities.getEntityProperties(pastedEntityIDs[0], ["position", "dimensions", - "registrationPoint"]); - var positionPreSnap = Vec3.sum(deltaPosition, firstEntityProps.position); - position = grid.snapToSurface(grid.snapToGrid(positionPreSnap, false, firstEntityProps.dimensions, - firstEntityProps.registrationPoint), firstEntityProps.dimensions, firstEntityProps.registrationPoint); - deltaPosition = Vec3.subtract(position, firstEntityProps.position); - } - - if (!Vec3.equal(deltaPosition, Vec3.ZERO)) { - for (var editEntityIndex = 0, numEntities = pastedEntityIDs.length; editEntityIndex < numEntities; editEntityIndex++) { - if (Uuid.isNull(entityParentIDs[editEntityIndex])) { - Entities.editEntity(pastedEntityIDs[editEntityIndex], { - position: Vec3.sum(deltaPosition, entityPositions[editEntityIndex]) - }); - } - } - } - } - - if (isActive) { - selectionManager.setSelections(pastedEntityIDs, this); - } - } else { - Window.notifyEditError("Can't import entities: entities would be out of bounds."); - } - } else { - Window.notifyEditError("There was an error importing the entity file."); - } - - Overlays.editOverlay(importingSVOTextOverlay, { - visible: false - }); - Overlays.editOverlay(importingSVOImageOverlay, { - visible: false - }); -} -Window.svoImportRequested.connect(importSVO); - -Menu.menuItemEvent.connect(handleMenuEvent); - -var keyPressEvent = function (event) { - if (isActive) { - cameraManager.keyPressEvent(event); - } -}; -var keyReleaseEvent = function (event) { - if (isActive) { - cameraManager.keyReleaseEvent(event); - } -}; -Controller.keyReleaseEvent.connect(keyReleaseEvent); -Controller.keyPressEvent.connect(keyPressEvent); - -function deleteKey(value) { - if (value === 0) { // on release - deleteSelectedEntities(); - } -} -function deselectKey(value) { - if (value === 0) { // on release - selectionManager.clearSelections(this); - } -} -function toggleKey(value) { - if (value === 0) { // on release - selectionDisplay.toggleSpaceMode(); - } -} -function focusKey(value) { - if (value === 0) { // on release - cameraManager.enable(); - if (selectionManager.hasSelection()) { - cameraManager.focus(selectionManager.worldPosition, selectionManager.worldDimensions, - Menu.isOptionChecked(MENU_EASE_ON_FOCUS)); - } - } -} -function gridKey(value) { - if (value === 0) { // on release - if (selectionManager.hasSelection()) { - grid.moveToSelection(); - } - } -} -function recursiveAdd(newParentID, parentData) { - if (parentData.children !== undefined) { - var children = parentData.children; - for (var i = 0; i < children.length; i++) { - var childProperties = children[i].properties; - childProperties.parentID = newParentID; - var newChildID = Entities.addEntity(childProperties); - recursiveAdd(newChildID, children[i]); - } - } -} - -var UndoHistory = function(onUpdate) { - this.history = []; - // The current position is the index of the last executed action in the history array. - // - // -1 0 1 2 3 <- position - // A B C D <- actions in history - // - // If our lastExecutedIndex is 1, the last executed action is B. - // If we undo, we undo B (index 1). If we redo, we redo C (index 2). - this.lastExecutedIndex = -1; - this.enabled = true; - this.onUpdate = onUpdate; -}; - -UndoHistory.prototype.pushCommand = function(undoFn, undoArgs, redoFn, redoArgs) { - if (!this.enabled) { - return; - } - // Delete any history following the last executed action. - this.history.splice(this.lastExecutedIndex + 1); - this.history.push({ - undoFn: undoFn, - undoArgs: undoArgs, - redoFn: redoFn, - redoArgs: redoArgs - }); - this.lastExecutedIndex++; - - if (this.onUpdate) { - this.onUpdate(); - } -}; -UndoHistory.prototype.setEnabled = function(enabled) { - this.enabled = enabled; - if (this.onUpdate) { - this.onUpdate(); - } -}; -UndoHistory.prototype.canUndo = function() { - return this.enabled && this.lastExecutedIndex >= 0; -}; -UndoHistory.prototype.canRedo = function() { - return this.enabled && this.lastExecutedIndex < this.history.length - 1; -}; -UndoHistory.prototype.undo = function() { - if (!this.canUndo()) { - console.warn("Cannot undo action"); - return; - } - - var command = this.history[this.lastExecutedIndex]; - command.undoFn(command.undoArgs); - this.lastExecutedIndex--; - - if (this.onUpdate) { - this.onUpdate(); - } -}; -UndoHistory.prototype.redo = function() { - if (!this.canRedo()) { - console.warn("Cannot redo action"); - return; - } - - var command = this.history[this.lastExecutedIndex + 1]; - command.redoFn(command.redoArgs); - this.lastExecutedIndex++; - - if (this.onUpdate) { - this.onUpdate(); - } -}; - -function updateUndoRedoMenuItems() { - Menu.setMenuEnabled("Edit > Undo", undoHistory.canUndo()); - Menu.setMenuEnabled("Edit > Redo", undoHistory.canRedo()); -} -var undoHistory = new UndoHistory(updateUndoRedoMenuItems); -updateUndoRedoMenuItems(); - -// When an entity has been deleted we need a way to "undo" this deletion. Because it's not currently -// possible to create an entity with a specific id, earlier undo commands to the deleted entity -// will fail if there isn't a way to find the new entity id. -var DELETED_ENTITY_MAP = {}; - -function applyEntityProperties(data) { - var editEntities = data.editEntities; - var createEntities = data.createEntities; - var deleteEntities = data.deleteEntities; - var selectedEntityIDs = []; - var selectEdits = createEntities.length === 0 || !data.selectCreated; - var i, entityID, entityProperties; - for (i = 0; i < createEntities.length; i++) { - entityID = createEntities[i].entityID; - entityProperties = createEntities[i].properties; - var newEntityID = Entities.addEntity(entityProperties); - recursiveAdd(newEntityID, createEntities[i]); - DELETED_ENTITY_MAP[entityID] = newEntityID; - if (data.selectCreated) { - selectedEntityIDs.push(newEntityID); - } - } - for (i = 0; i < deleteEntities.length; i++) { - entityID = deleteEntities[i].entityID; - if (DELETED_ENTITY_MAP[entityID] !== undefined) { - entityID = DELETED_ENTITY_MAP[entityID]; - } - Entities.deleteEntity(entityID); - var index = selectedEntityIDs.indexOf(entityID); - if (index >= 0) { - selectedEntityIDs.splice(index, 1); - } - } - for (i = 0; i < editEntities.length; i++) { - entityID = editEntities[i].entityID; - if (DELETED_ENTITY_MAP[entityID] !== undefined) { - entityID = DELETED_ENTITY_MAP[entityID]; - } - entityProperties = editEntities[i].properties; - if (entityProperties !== null) { - Entities.editEntity(entityID, entityProperties); - } - if (selectEdits) { - selectedEntityIDs.push(entityID); - } - } - - // We might be getting an undo while edit.js is disabled. If that is the case, don't set - // our selections, causing the edit widgets to display. - if (isActive) { - selectionManager.setSelections(selectedEntityIDs, this); - selectionManager.saveProperties(); - } -} - -// For currently selected entities, push a command to the UndoStack that uses the current entity properties for the -// redo command, and the saved properties for the undo command. Also, include create and delete entity data. -function pushCommandForSelections(createdEntityData, deletedEntityData, doNotSaveEditProperties) { - doNotSaveEditProperties = false; - var undoData = { - editEntities: [], - createEntities: deletedEntityData || [], - deleteEntities: createdEntityData || [], - selectCreated: true - }; - var redoData = { - editEntities: [], - createEntities: createdEntityData || [], - deleteEntities: deletedEntityData || [], - selectCreated: true - }; - for (var i = 0; i < SelectionManager.selections.length; i++) { - var entityID = SelectionManager.selections[i]; - var initialProperties = SelectionManager.savedProperties[entityID]; - var currentProperties = null; - if (!initialProperties) { - continue; - } - - if (doNotSaveEditProperties) { - initialProperties = null; - } else { - currentProperties = Entities.getEntityProperties(entityID); - } - - undoData.editEntities.push({ - entityID: entityID, - properties: initialProperties - }); - redoData.editEntities.push({ - entityID: entityID, - properties: currentProperties - }); - } - undoHistory.pushCommand(applyEntityProperties, undoData, applyEntityProperties, redoData); -} - -var ServerScriptStatusMonitor = function(entityID, statusCallback) { - var self = this; - - self.entityID = entityID; - self.active = true; - self.sendRequestTimerID = null; - - var onStatusReceived = function(success, isRunning, status, errorInfo) { - if (self.active) { - statusCallback({ - statusRetrieved: success, - isRunning: isRunning, - status: status, - errorInfo: errorInfo - }); - self.sendRequestTimerID = Script.setTimeout(function() { - if (self.active) { - Entities.getServerScriptStatus(entityID, onStatusReceived); - } - }, 1000); - } - }; - self.stop = function() { - self.active = false; - }; - - Entities.getServerScriptStatus(entityID, onStatusReceived); -}; - -var PropertiesTool = function (opts) { - var that = {}; - - var webView = null; - webView = Tablet.getTablet("com.highfidelity.interface.tablet.system"); - webView.setVisible = function(value) {}; - - var visible = false; - - // This keeps track of the last entity ID that was selected. If multiple entities - // are selected or if no entity is selected this will be `null`. - var currentSelectedEntityID = null; - var statusMonitor = null; - var blockPropertyUpdates = false; - - that.setVisible = function (newVisible) { - visible = newVisible; - webView.setVisible(shouldUseEditTabletApp() && visible); - createToolsWindow.setVisible(!shouldUseEditTabletApp() && visible); - }; - - that.setVisible(false); - - function emitScriptEvent(data) { - var dataString = JSON.stringify(data); - webView.emitScriptEvent(dataString); - createToolsWindow.emitScriptEvent(dataString); - } - - function updateScriptStatus(info) { - info.type = "server_script_status"; - emitScriptEvent(info); - } - - function resetScriptStatus() { - updateScriptStatus({ - statusRetrieved: undefined, - isRunning: undefined, - status: "", - errorInfo: "" - }); - } - - that.setSpaceMode = function(spaceMode) { - emitScriptEvent({ - type: 'setSpaceMode', - spaceMode: spaceMode - }) - }; - - function updateSelections(selectionUpdated, caller) { - if (blockPropertyUpdates) { - return; - } - - var data = { - type: 'update', - spaceMode: selectionDisplay.getSpaceMode(), - isPropertiesToolUpdate: caller === this, - }; - - if (selectionUpdated) { - resetScriptStatus(); - - if (selectionManager.selections.length !== 1) { - if (statusMonitor !== null) { - statusMonitor.stop(); - statusMonitor = null; - } - currentSelectedEntityID = null; - } else if (currentSelectedEntityID !== selectionManager.selections[0]) { - if (statusMonitor !== null) { - statusMonitor.stop(); - } - var entityID = selectionManager.selections[0]; - currentSelectedEntityID = entityID; - statusMonitor = new ServerScriptStatusMonitor(entityID, updateScriptStatus); - } - } - - var selections = []; - for (var i = 0; i < selectionManager.selections.length; i++) { - var entity = {}; - entity.id = selectionManager.selections[i]; - entity.properties = Entities.getEntityProperties(selectionManager.selections[i]); - if (entity.properties.rotation !== undefined) { - entity.properties.rotation = Quat.safeEulerAngles(entity.properties.rotation); - } - if (entity.properties.localRotation !== undefined) { - entity.properties.localRotation = Quat.safeEulerAngles(entity.properties.localRotation); - } - if (entity.properties.emitOrientation !== undefined) { - entity.properties.emitOrientation = Quat.safeEulerAngles(entity.properties.emitOrientation); - } - if (entity.properties.keyLight !== undefined && entity.properties.keyLight.direction !== undefined) { - entity.properties.keyLight.direction = Vec3.toPolar(entity.properties.keyLight.direction); - entity.properties.keyLight.direction.z = 0.0; - } - selections.push(entity); - } - data.selections = selections; - - emitScriptEvent(data); - } - selectionManager.addEventListener(updateSelections, this); - - - var onWebEventReceived = function(data) { - try { - data = JSON.parse(data); - } catch(e) { - return; - } - var i, properties, dY, diff, newPosition; - if (data.type === "update") { - - if (data.properties || data.propertiesMap) { - var propertiesMap = data.propertiesMap; - if (propertiesMap === undefined) { - propertiesMap = [{ - entityIDs: data.ids, - properties: data.properties, - }]; - } - - var sendListUpdate = false; - propertiesMap.forEach(function(propertiesObject) { - var properties = propertiesObject.properties; - var updateEntityIDs = propertiesObject.entityIDs; - if (properties.dynamic === false) { - // this object is leaving dynamic, so we zero its velocities - properties.localVelocity = Vec3.ZERO; - properties.localAngularVelocity = Vec3.ZERO; - } - if (properties.rotation !== undefined) { - properties.rotation = Quat.fromVec3Degrees(properties.rotation); - } - if (properties.localRotation !== undefined) { - properties.localRotation = Quat.fromVec3Degrees(properties.localRotation); - } - if (properties.emitOrientation !== undefined) { - properties.emitOrientation = Quat.fromVec3Degrees(properties.emitOrientation); - } - if (properties.keyLight !== undefined && properties.keyLight.direction !== undefined) { - var currentKeyLightDirection = Vec3.toPolar(Entities.getEntityProperties(selectionManager.selections[0], ['keyLight.direction']).keyLight.direction); - if (properties.keyLight.direction.x === undefined) { - properties.keyLight.direction.x = currentKeyLightDirection.x; - } - if (properties.keyLight.direction.y === undefined) { - properties.keyLight.direction.y = currentKeyLightDirection.y; - } - properties.keyLight.direction = Vec3.fromPolar(properties.keyLight.direction.x, properties.keyLight.direction.y); - } - - updateEntityIDs.forEach(function (entityID) { - Entities.editEntity(entityID, properties); - }); - - if (properties.name !== undefined || properties.modelURL !== undefined || properties.materialURL !== undefined || - properties.visible !== undefined || properties.locked !== undefined) { - - sendListUpdate = true; - } - - }); - if (sendListUpdate) { - entityListTool.sendUpdate(); - } - } - - - if (data.onlyUpdateEntities) { - blockPropertyUpdates = true; - } else { - pushCommandForSelections(); - SelectionManager.saveProperties(); - } - selectionManager._update(false, this); - blockPropertyUpdates = false; - } else if (data.type === 'saveUserData' || data.type === 'saveMaterialData') { - data.ids.forEach(function(entityID) { - Entities.editEntity(entityID, data.properties); - }); - } else if (data.type === "showMarketplace") { - showMarketplace(); - } else if (data.type === "action") { - if (data.action === "moveSelectionToGrid") { - if (selectionManager.hasSelection()) { - selectionManager.saveProperties(); - dY = grid.getOrigin().y - (selectionManager.worldPosition.y - selectionManager.worldDimensions.y / 2); - diff = { - x: 0, - y: dY, - z: 0 - }; - for (i = 0; i < selectionManager.selections.length; i++) { - properties = selectionManager.savedProperties[selectionManager.selections[i]]; - newPosition = Vec3.sum(properties.position, diff); - Entities.editEntity(selectionManager.selections[i], { - position: newPosition - }); - } - pushCommandForSelections(); - selectionManager._update(false, this); - } - } else if (data.action === "moveAllToGrid") { - if (selectionManager.hasSelection()) { - selectionManager.saveProperties(); - for (i = 0; i < selectionManager.selections.length; i++) { - properties = selectionManager.savedProperties[selectionManager.selections[i]]; - var bottomY = properties.boundingBox.center.y - properties.boundingBox.dimensions.y / 2; - dY = grid.getOrigin().y - bottomY; - diff = { - x: 0, - y: dY, - z: 0 - }; - newPosition = Vec3.sum(properties.position, diff); - Entities.editEntity(selectionManager.selections[i], { - position: newPosition - }); - } - pushCommandForSelections(); - selectionManager._update(false, this); - } - } else if (data.action === "resetToNaturalDimensions") { - if (selectionManager.hasSelection()) { - selectionManager.saveProperties(); - for (i = 0; i < selectionManager.selections.length; i++) { - properties = selectionManager.savedProperties[selectionManager.selections[i]]; - var naturalDimensions = properties.naturalDimensions; - - // If any of the natural dimensions are not 0, resize - if (properties.type === "Model" && naturalDimensions.x === 0 && naturalDimensions.y === 0 && - naturalDimensions.z === 0) { - Window.notifyEditError("Cannot reset entity to its natural dimensions: Model URL" + - " is invalid or the model has not yet been loaded."); - } else { - Entities.editEntity(selectionManager.selections[i], { - dimensions: properties.naturalDimensions - }); - } - } - pushCommandForSelections(); - selectionManager._update(false, this); - } - } else if (data.action === "previewCamera") { - if (selectionManager.hasSelection()) { - Camera.mode = "entity"; - Camera.cameraEntity = selectionManager.selections[0]; - } - } else if (data.action === "rescaleDimensions") { - var multiplier = data.percentage / 100.0; - if (selectionManager.hasSelection()) { - selectionManager.saveProperties(); - for (i = 0; i < selectionManager.selections.length; i++) { - properties = selectionManager.savedProperties[selectionManager.selections[i]]; - Entities.editEntity(selectionManager.selections[i], { - dimensions: Vec3.multiply(multiplier, properties.dimensions) - }); - } - pushCommandForSelections(); - selectionManager._update(false, this); - } - } else if (data.action === "reloadClientScripts") { - if (selectionManager.hasSelection()) { - var timestamp = Date.now(); - for (i = 0; i < selectionManager.selections.length; i++) { - Entities.editEntity(selectionManager.selections[i], { - scriptTimestamp: timestamp - }); - } - } - } else if (data.action === "reloadServerScripts") { - if (selectionManager.hasSelection()) { - for (i = 0; i < selectionManager.selections.length; i++) { - Entities.reloadServerScripts(selectionManager.selections[i]); - } - } - } - } else if (data.type === "propertiesPageReady") { - updateSelections(true); - } else if (data.type === "tooltipsRequest") { - emitScriptEvent({ - type: 'tooltipsReply', - tooltips: Script.require('./assets/data/createAppTooltips.json'), - hmdActive: HMD.active, - }); - } else if (data.type === "propertyRangeRequest") { - var propertyRanges = {}; - data.properties.forEach(function (property) { - propertyRanges[property] = Entities.getPropertyInfo(property); - }); - emitScriptEvent({ - type: 'propertyRangeReply', - propertyRanges: propertyRanges, - }); - } else if (data.type === "materialTargetRequest") { - var parentModelData; - var properties = Entities.getEntityProperties(data.entityID, ["type", "parentID"]); - if (properties.type === "Material" && properties.parentID !== Uuid.NULL) { - var parentType = Entities.getEntityProperties(properties.parentID, ["type"]).type; - if (parentType === "Model" || Entities.getNestableType(properties.parentID) === "avatar") { - parentModelData = Graphics.getModel(properties.parentID); - } else if (parentType === "Shape" || parentType === "Box" || parentType === "Sphere") { - parentModelData = {}; - parentModelData.numMeshes = 1; - parentModelData.materialNames = []; - } - } - emitScriptEvent({ - type: 'materialTargetReply', - entityID: data.entityID, - materialTargetData: parentModelData, - }); - } else if (data.type === "zoneListRequest") { - emitScriptEvent({ - type: 'zoneListRequest', - zones: getExistingZoneList() - }); - } - }; - - HMD.displayModeChanged.connect(function() { - emitScriptEvent({ - type: 'hmdActiveChanged', - hmdActive: HMD.active, - }); - }); - - createToolsWindow.webEventReceived.addListener(this, onWebEventReceived); - - webView.webEventReceived.connect(this, onWebEventReceived); - - return that; -}; - - -var PopupMenu = function () { - var self = this; - - var MENU_ITEM_HEIGHT = 21; - var MENU_ITEM_SPACING = 1; - var TEXT_MARGIN = 7; - - var overlays = []; - var overlayInfo = {}; - - var visible = false; - - var upColor = { - red: 0, - green: 0, - blue: 0 - }; - var downColor = { - red: 192, - green: 192, - blue: 192 - }; - var overColor = { - red: 128, - green: 128, - blue: 128 - }; - - self.onSelectMenuItem = function () {}; - - self.addMenuItem = function (name) { - var id = Overlays.addOverlay("text", { - text: name, - backgroundAlpha: 1.0, - backgroundColor: upColor, - topMargin: TEXT_MARGIN, - leftMargin: TEXT_MARGIN, - width: 210, - height: MENU_ITEM_HEIGHT, - font: { - size: 12 - }, - visible: false - }); - overlays.push(id); - overlayInfo[id] = { - name: name - }; - return id; - }; - - self.updateMenuItemText = function (id, newText) { - Overlays.editOverlay(id, { - text: newText - }); - }; - - self.setPosition = function (x, y) { - for (var key in overlayInfo) { - Overlays.editOverlay(key, { - x: x, - y: y - }); - y += MENU_ITEM_HEIGHT + MENU_ITEM_SPACING; - } - }; - - self.onSelected = function () {}; - - var pressingOverlay = null; - var hoveringOverlay = null; - - self.mousePressEvent = function (event) { - if (event.isLeftButton) { - var overlay = Overlays.getOverlayAtPoint({ - x: event.x, - y: event.y - }); - if (overlay in overlayInfo) { - pressingOverlay = overlay; - Overlays.editOverlay(pressingOverlay, { - backgroundColor: downColor - }); - } else { - self.hide(); - } - return false; - } - }; - self.mouseMoveEvent = function (event) { - if (visible) { - var overlay = Overlays.getOverlayAtPoint({ - x: event.x, - y: event.y - }); - if (!pressingOverlay) { - if (hoveringOverlay !== null && overlay !== hoveringOverlay) { - Overlays.editOverlay(hoveringOverlay, { - backgroundColor: upColor - }); - hoveringOverlay = null; - } - if (overlay !== hoveringOverlay && overlay in overlayInfo) { - Overlays.editOverlay(overlay, { - backgroundColor: overColor - }); - hoveringOverlay = overlay; - } - } - } - return false; - }; - self.mouseReleaseEvent = function (event) { - var overlay = Overlays.getOverlayAtPoint({ - x: event.x, - y: event.y - }); - if (pressingOverlay !== null && pressingOverlay !== undefined) { - if (overlay === pressingOverlay) { - self.onSelectMenuItem(overlayInfo[overlay].name); - } - Overlays.editOverlay(pressingOverlay, { - backgroundColor: upColor - }); - pressingOverlay = null; - self.hide(); - } - }; - - self.setVisible = function (newVisible) { - if (newVisible !== visible) { - visible = newVisible; - for (var key in overlayInfo) { - Overlays.editOverlay(key, { - visible: newVisible - }); - } - } - }; - self.show = function () { - self.setVisible(true); - }; - self.hide = function () { - self.setVisible(false); - }; - - function cleanup() { - ContextOverlay.enabled = true; - for (var i = 0; i < overlays.length; i++) { - Overlays.deleteOverlay(overlays[i]); - } - Controller.mousePressEvent.disconnect(self.mousePressEvent); - Controller.mouseMoveEvent.disconnect(self.mouseMoveEvent); - Controller.mouseReleaseEvent.disconnect(self.mouseReleaseEvent); - - Entities.canRezChanged.disconnect(checkEditPermissionsAndUpdate); - Entities.canRezTmpChanged.disconnect(checkEditPermissionsAndUpdate); - Entities.canRezCertifiedChanged.disconnect(checkEditPermissionsAndUpdate); - Entities.canRezTmpCertifiedChanged.disconnect(checkEditPermissionsAndUpdate); - } - - Controller.mousePressEvent.connect(self.mousePressEvent); - Controller.mouseMoveEvent.connect(self.mouseMoveEvent); - Controller.mouseReleaseEvent.connect(self.mouseReleaseEvent); - Script.scriptEnding.connect(cleanup); - - return this; -}; - -function whenPressed(fn) { - return function(value) { - if (value > 0) { - fn(); - } - }; -} - -function whenReleased(fn) { - return function(value) { - if (value === 0) { - fn(); - } - }; -} - -var isOnMacPlatform = Controller.getValue(Controller.Hardware.Application.PlatformMac); - -var mapping = Controller.newMapping(CONTROLLER_MAPPING_NAME); -if (isOnMacPlatform) { - mapping.from([Controller.Hardware.Keyboard.Backspace]).to(deleteKey); -} else { - mapping.from([Controller.Hardware.Keyboard.Delete]).to(deleteKey); -} -mapping.from([Controller.Hardware.Keyboard.T]).to(toggleKey); -mapping.from([Controller.Hardware.Keyboard.F]).to(focusKey); -mapping.from([Controller.Hardware.Keyboard.G]).to(gridKey); -mapping.from([Controller.Hardware.Keyboard.X]) - .when([Controller.Hardware.Keyboard.Control]) - .to(whenReleased(function() { selectionManager.cutSelectedEntities() })); -mapping.from([Controller.Hardware.Keyboard.C]) - .when([Controller.Hardware.Keyboard.Control]) - .to(whenReleased(function() { selectionManager.copySelectedEntities() })); -mapping.from([Controller.Hardware.Keyboard.V]) - .when([Controller.Hardware.Keyboard.Control]) - .to(whenReleased(function() { selectionManager.pasteEntities() })); -mapping.from([Controller.Hardware.Keyboard.D]) - .when([Controller.Hardware.Keyboard.Control]) - .to(whenReleased(function() { selectionManager.duplicateSelection() })); - -// Bind undo to ctrl-shift-z to maintain backwards-compatibility -mapping.from([Controller.Hardware.Keyboard.Z]) - .when([Controller.Hardware.Keyboard.Control, Controller.Hardware.Keyboard.Shift]) - .to(whenPressed(function() { undoHistory.redo() })); - - -mapping.from([Controller.Hardware.Keyboard.P]) - .when([Controller.Hardware.Keyboard.Control, Controller.Hardware.Keyboard.Shift]) - .to(whenReleased(function() { unparentSelectedEntities(); })); - -mapping.from([Controller.Hardware.Keyboard.P]) - .when([Controller.Hardware.Keyboard.Control, !Controller.Hardware.Keyboard.Shift]) - .to(whenReleased(function() { parentSelectedEntities(); })); - -keyUpEventFromUIWindow = function(keyUpEvent) { - var WANT_DEBUG_MISSING_SHORTCUTS = false; - - var pressedValue = 0.0; - - if ((!isOnMacPlatform && keyUpEvent.keyCodeString === "Delete") - || (isOnMacPlatform && keyUpEvent.keyCodeString === "Backspace")) { - - deleteKey(pressedValue); - } else if (keyUpEvent.keyCodeString === "T") { - toggleKey(pressedValue); - } else if (keyUpEvent.keyCodeString === "F") { - focusKey(pressedValue); - } else if (keyUpEvent.keyCodeString === "G") { - gridKey(pressedValue); - } else if (keyUpEvent.controlKey && keyUpEvent.keyCodeString === "X") { - selectionManager.cutSelectedEntities(); - } else if (keyUpEvent.controlKey && keyUpEvent.keyCodeString === "C") { - selectionManager.copySelectedEntities(); - } else if (keyUpEvent.controlKey && keyUpEvent.keyCodeString === "V") { - selectionManager.pasteEntities(); - } else if (keyUpEvent.controlKey && keyUpEvent.keyCodeString === "D") { - selectionManager.duplicateSelection(); - } else if (!isOnMacPlatform && keyUpEvent.controlKey && !keyUpEvent.shiftKey && keyUpEvent.keyCodeString === "Z") { - undoHistory.undo(); // undo is only handled via handleMenuItem on Mac - } else if (keyUpEvent.controlKey && !keyUpEvent.shiftKey && keyUpEvent.keyCodeString === "P") { - parentSelectedEntities(); - } else if (keyUpEvent.controlKey && keyUpEvent.shiftKey && keyUpEvent.keyCodeString === "P") { - unparentSelectedEntities(); - } else if (!isOnMacPlatform && - ((keyUpEvent.controlKey && keyUpEvent.shiftKey && keyUpEvent.keyCodeString === "Z") || - (keyUpEvent.controlKey && keyUpEvent.keyCodeString === "Y"))) { - undoHistory.redo(); // redo is only handled via handleMenuItem on Mac - } else if (WANT_DEBUG_MISSING_SHORTCUTS) { - console.warn("unhandled key event: " + JSON.stringify(keyUpEvent)) - } -}; - -var propertyMenu = new PopupMenu(); - -propertyMenu.onSelectMenuItem = function (name) { - - if (propertyMenu.marketplaceID) { - showMarketplace(propertyMenu.marketplaceID); - } -}; - -var showMenuItem = propertyMenu.addMenuItem("Show in Marketplace"); - -var propertiesTool = new PropertiesTool(); - -selectionDisplay.onSpaceModeChange = function(spaceMode) { - entityListTool.setSpaceMode(spaceMode); - propertiesTool.setSpaceMode(spaceMode); -}; - -function getExistingZoneList() { - var center = {"x": 0, "y": 0, "z": 0}; - var existingZoneIDs = Entities.findEntitiesByType("Zone", center, 17000); - var listExistingZones = []; - var thisZone = {}; - var properties; - for (var k = 0; k < existingZoneIDs.length; k++) { - properties = Entities.getEntityProperties(existingZoneIDs[k], ["name"]); - thisZone = { - "id": existingZoneIDs[k], - "name": properties.name - }; - listExistingZones.push(thisZone); - } - return listExistingZones; -} - -}()); // END LOCAL_SCOPE +// edit.js +// +// Created by Brad Hefta-Gaub on 10/2/14. +// Persist toolbar by HRS 6/11/15. +// Copyright 2014 High Fidelity, Inc. +// Copyright 2020 Vircadia contributors. +// +// This script allows you to edit entities with a new UI/UX for mouse and trackpad based editing +// +// 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, 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, OverlaySystemWindow, + keyUpEventFromUIWindow:true */ + +(function() { // BEGIN LOCAL_SCOPE + +"use strict"; + +var EDIT_TOGGLE_BUTTON = "com.highfidelity.interface.system.editButton"; + +var CONTROLLER_MAPPING_NAME = "com.highfidelity.editMode"; + +Script.include([ + "../libraries/stringHelpers.js", + "../libraries/dataViewHelpers.js", + "../libraries/progressDialog.js", + "../libraries/ToolTip.js", + "../libraries/entityCameraTool.js", + "../libraries/utils.js", + "../libraries/entityIconOverlayManager.js", + "../libraries/gridTool.js", + "entityList/entityList.js", + "entitySelectionTool/entitySelectionTool.js" +]); + +var CreateWindow = Script.require('./modules/createWindow.js'); + +var TITLE_OFFSET = 60; +var CREATE_TOOLS_WIDTH = 490; +var MAX_DEFAULT_ENTITY_LIST_HEIGHT = 942; + +var DEFAULT_IMAGE = "https://hifi-content.s3.amazonaws.com/DomainContent/production/no-image.jpg"; + +var createToolsWindow = new CreateWindow( + Script.resolvePath("qml/EditTools.qml"), + 'Create Tools', + 'com.highfidelity.create.createToolsWindow', + function () { + var windowHeight = Window.innerHeight - TITLE_OFFSET; + if (windowHeight > MAX_DEFAULT_ENTITY_LIST_HEIGHT) { + windowHeight = MAX_DEFAULT_ENTITY_LIST_HEIGHT; + } + return { + size: { + x: CREATE_TOOLS_WIDTH, + y: windowHeight + }, + position: { + x: Window.x + Window.innerWidth - CREATE_TOOLS_WIDTH, + y: Window.y + TITLE_OFFSET + } + } + }, + false +); + +/** + * @description Returns true in case we should use the tablet version of the CreateApp + * @returns boolean + */ +var shouldUseEditTabletApp = function() { + return HMD.active || (!HMD.active && !Settings.getValue("desktopTabletBecomesToolbar", true)); +}; + + +var selectionDisplay = SelectionDisplay; +var selectionManager = SelectionManager; + +var PARTICLE_SYSTEM_URL = Script.resolvePath("assets/images/icon-particles.svg"); +var POINT_LIGHT_URL = Script.resolvePath("assets/images/icon-point-light.svg"); +var SPOT_LIGHT_URL = Script.resolvePath("assets/images/icon-spot-light.svg"); +var ZONE_URL = Script.resolvePath("assets/images/icon-zone.svg"); + +var entityIconOverlayManager = new EntityIconOverlayManager(['Light', 'ParticleEffect', 'Zone'], function(entityID) { + var properties = Entities.getEntityProperties(entityID, ['type', 'isSpotlight']); + if (properties.type === 'Light') { + return { + url: properties.isSpotlight ? SPOT_LIGHT_URL : POINT_LIGHT_URL, + }; + } else if (properties.type === 'Zone') { + return { + url: ZONE_URL, + }; + } else { + return { + url: PARTICLE_SYSTEM_URL, + }; + } +}); + +var cameraManager = new CameraManager(); + +var grid = new Grid(); +var gridTool = new GridTool({ + horizontalGrid: grid, + createToolsWindow: createToolsWindow, + shouldUseEditTabletApp: shouldUseEditTabletApp +}); +gridTool.setVisible(false); + +var EntityShapeVisualizer = Script.require('./modules/entityShapeVisualizer.js'); +var entityShapeVisualizer = new EntityShapeVisualizer(["Zone"]); + +var entityListTool = new EntityListTool(shouldUseEditTabletApp); + +selectionManager.addEventListener(function () { + selectionDisplay.updateHandles(); + entityIconOverlayManager.updatePositions(); + entityShapeVisualizer.setEntities(selectionManager.selections); +}); + +var DEGREES_TO_RADIANS = Math.PI / 180.0; +var RADIANS_TO_DEGREES = 180.0 / Math.PI; + +var MIN_ANGULAR_SIZE = 2; +var MAX_ANGULAR_SIZE = 45; +var allowLargeModels = true; +var allowSmallModels = true; + +var DEFAULT_DIMENSION = 0.20; + +var DEFAULT_DIMENSIONS = { + x: DEFAULT_DIMENSION, + y: DEFAULT_DIMENSION, + z: DEFAULT_DIMENSION +}; + +var DEFAULT_LIGHT_DIMENSIONS = Vec3.multiply(20, DEFAULT_DIMENSIONS); + +var MENU_AUTO_FOCUS_ON_SELECT = "Auto Focus on Select"; +var MENU_EASE_ON_FOCUS = "Ease Orientation on Focus"; +var MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE = "Show Lights and Particle Systems in Create Mode"; +var MENU_SHOW_ZONES_IN_EDIT_MODE = "Show Zones in Create Mode"; + +var MENU_CREATE_ENTITIES_GRABBABLE = "Create Entities As Grabbable (except Zones, Particles, and Lights)"; +var MENU_ALLOW_SELECTION_LARGE = "Allow Selecting of Large Models"; +var MENU_ALLOW_SELECTION_SMALL = "Allow Selecting of Small Models"; +var MENU_ALLOW_SELECTION_LIGHTS = "Allow Selecting of Lights"; + +var SETTING_AUTO_FOCUS_ON_SELECT = "autoFocusOnSelect"; +var SETTING_EASE_ON_FOCUS = "cameraEaseOnFocus"; +var SETTING_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE = "showLightsAndParticlesInEditMode"; +var SETTING_SHOW_ZONES_IN_EDIT_MODE = "showZonesInEditMode"; + +var SETTING_EDIT_PREFIX = "Edit/"; + + +var CREATE_ENABLED_ICON = "icons/tablet-icons/edit-i.svg"; +var CREATE_DISABLED_ICON = "icons/tablet-icons/edit-disabled.svg"; + +// marketplace info, etc. not quite ready yet. +var SHOULD_SHOW_PROPERTY_MENU = false; +var INSUFFICIENT_PERMISSIONS_ERROR_MSG = "You do not have the necessary permissions to edit on this domain."; +var INSUFFICIENT_PERMISSIONS_IMPORT_ERROR_MSG = "You do not have the necessary permissions to place items on this domain."; + +var isActive = false; +var createButton = null; + +var IMPORTING_SVO_OVERLAY_WIDTH = 144; +var IMPORTING_SVO_OVERLAY_HEIGHT = 30; +var IMPORTING_SVO_OVERLAY_MARGIN = 5; +var IMPORTING_SVO_OVERLAY_LEFT_MARGIN = 34; +var importingSVOImageOverlay = Overlays.addOverlay("image", { + imageURL: Script.resolvePath("assets/images/hourglass.svg"), + width: 20, + height: 20, + alpha: 1.0, + x: Window.innerWidth - IMPORTING_SVO_OVERLAY_WIDTH, + y: Window.innerHeight - IMPORTING_SVO_OVERLAY_HEIGHT, + visible: false +}); +var importingSVOTextOverlay = Overlays.addOverlay("text", { + font: { + size: 14 + }, + text: "Importing SVO...", + leftMargin: IMPORTING_SVO_OVERLAY_LEFT_MARGIN, + x: Window.innerWidth - IMPORTING_SVO_OVERLAY_WIDTH - IMPORTING_SVO_OVERLAY_MARGIN, + y: Window.innerHeight - IMPORTING_SVO_OVERLAY_HEIGHT - IMPORTING_SVO_OVERLAY_MARGIN, + width: IMPORTING_SVO_OVERLAY_WIDTH, + height: IMPORTING_SVO_OVERLAY_HEIGHT, + backgroundColor: { + red: 80, + green: 80, + blue: 80 + }, + backgroundAlpha: 0.7, + visible: false +}); + +var MARKETPLACE_URL = Account.metaverseServerURL + "/marketplace"; +var marketplaceWindow = new OverlayWebWindow({ + title: 'Marketplace', + source: "about:blank", + width: 900, + height: 700, + visible: false +}); + +function showMarketplace(marketplaceID) { + var url = MARKETPLACE_URL; + if (marketplaceID) { + url = url + "/items/" + marketplaceID; + } + marketplaceWindow.setURL(url); + marketplaceWindow.setVisible(true); + marketplaceWindow.raise(); + + UserActivityLogger.logAction("opened_marketplace"); +} + +function hideMarketplace() { + marketplaceWindow.setVisible(false); + marketplaceWindow.setURL("about:blank"); +} + +// function toggleMarketplace() { +// if (marketplaceWindow.visible) { +// hideMarketplace(); +// } else { +// showMarketplace(); +// } +// } + +function adjustPositionPerBoundingBox(position, direction, registration, dimensions, orientation) { + // Adjust the position such that the bounding box (registration, dimensions 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 GRABBABLE_ENTITIES_MENU_CATEGORY = "Edit"; + +// Handles any edit mode updates required when domains have switched +function checkEditPermissionsAndUpdate() { + if ((createButton === null) || (createButton === undefined)) { + //--EARLY EXIT--( nothing to safely update ) + return; + } + + var hasRezPermissions = (Entities.canRez() || Entities.canRezTmp() || Entities.canRezCertified() || Entities.canRezTmpCertified()); + createButton.editProperties({ + icon: (hasRezPermissions ? CREATE_ENABLED_ICON : CREATE_DISABLED_ICON), + captionColor: (hasRezPermissions ? "#ffffff" : "#888888"), + }); + + if (!hasRezPermissions && isActive) { + that.setActive(false); + tablet.gotoHomeScreen(); + } +} + +// Copies the properties in `b` into `a`. `a` will be modified. +function copyProperties(a, b) { + for (var key in b) { + a[key] = b[key]; + } + return a; +} + +const DEFAULT_DYNAMIC_PROPERTIES = { + dynamic: true, + damping: 0.39347, + angularDamping: 0.39347, + gravity: { x: 0, y: -9.8, z: 0 }, +}; + +const DEFAULT_NON_DYNAMIC_PROPERTIES = { + dynamic: false, + damping: 0, + angularDamping: 0, + gravity: { x: 0, y: 0, z: 0 }, +}; + +const DEFAULT_ENTITY_PROPERTIES = { + All: { + description: "", + rotation: { x: 0, y: 0, z: 0, w: 1 }, + collidesWith: "static,dynamic,kinematic,otherAvatar,myAvatar", + collisionSoundURL: "", + cloneable: false, + ignoreIK: true, + canCastShadow: true, + href: "", + script: "", + serverScripts:"", + velocity: { + x: 0, + y: 0, + z: 0 + }, + angularVelocity: { + x: 0, + y: 0, + z: 0 + }, + restitution: 0.5, + friction: 0.5, + density: 1000, + dynamic: false, + }, + Shape: { + shape: "Box", + dimensions: { x: 0.2, y: 0.2, z: 0.2 }, + color: { red: 0, green: 180, blue: 239 }, + }, + Text: { + text: "Text", + dimensions: { + x: 0.65, + y: 0.3, + z: 0.01 + }, + textColor: { red: 255, green: 255, blue: 255 }, + backgroundColor: { red: 0, green: 0, blue: 0 }, + lineHeight: 0.06, + faceCamera: false, + }, + Zone: { + dimensions: { + x: 10, + y: 10, + z: 10 + }, + flyingAllowed: true, + ghostingAllowed: true, + filter: "", + keyLightMode: "inherit", + keyLightColor: { red: 255, green: 255, blue: 255 }, + keyLight: { + intensity: 1.0, + direction: { + x: 0.0, + y: -0.707106769084930, // 45 degrees + z: 0.7071067690849304 + }, + castShadows: true + }, + ambientLightMode: "inherit", + ambientLight: { + ambientIntensity: 0.5, + ambientURL: "" + }, + hazeMode: "inherit", + haze: { + hazeRange: 1000, + hazeAltitudeEffect: false, + hazeBaseRef: 0, + hazeColor: { + red: 128, + green: 154, + blue: 179 + }, + hazeBackgroundBlend: 0, + hazeEnableGlare: false, + hazeGlareColor: { + red: 255, + green: 229, + blue: 179 + }, + }, + shapeType: "box", + bloomMode: "inherit", + avatarPriority: "inherit", + screenshare: "inherit", + }, + Model: { + collisionShape: "none", + compoundShapeURL: "", + animation: { + url: "", + running: false, + allowTranslation: false, + loop: true, + hold: false, + currentFrame: 0, + firstFrame: 0, + lastFrame: 100000, + fps: 30.0, + } + }, + Image: { + dimensions: { + x: 0.5385, + y: 0.2819, + z: 0.0092 + }, + shapeType: "box", + collisionless: true, + keepAspectRatio: false, + imageURL: DEFAULT_IMAGE + }, + Web: { + dimensions: { + x: 1.6, + y: 0.9, + z: 0.01 + }, + sourceUrl: "https://projectathena.io/", + dpi: 30, + }, + ParticleEffect: { + lifespan: 1.5, + maxParticles: 10, + textures: "https://content.highfidelity.com/DomainContent/production/Particles/wispy-smoke.png", + emitRate: 5.5, + emitSpeed: 0, + speedSpread: 0, + emitDimensions: { x: 0, y: 0, z: 0 }, + emitOrientation: { x: 0, y: 0, z: 0, w: 1 }, + emitterShouldTrail: true, + particleRadius: 0.25, + radiusStart: 0, + radiusSpread: 0, + particleColor: { + red: 255, + green: 255, + blue: 255 + }, + colorSpread: { + red: 0, + green: 0, + blue: 0 + }, + alpha: 0, + alphaStart: 1, + alphaSpread: 0, + emitAcceleration: { + x: 0, + y: 2.5, + z: 0 + }, + accelerationSpread: { + x: 0, + y: 0, + z: 0 + }, + particleSpin: 0, + spinSpread: 0, + rotateWithEntity: false, + polarStart: 0, + polarFinish: Math.PI, + azimuthStart: -Math.PI, + azimuthFinish: Math.PI + }, + Light: { + color: { red: 255, green: 255, blue: 255 }, + intensity: 5.0, + dimensions: DEFAULT_LIGHT_DIMENSIONS, + falloffRadius: 1.0, + isSpotlight: false, + exponent: 1.0, + cutoff: 75.0, + }, +}; + +var toolBar = (function () { + var EDIT_SETTING = "io.highfidelity.isEditing"; // for communication with other scripts + var that = {}, + toolBar, + activeButton = null, + systemToolbar = null, + dialogWindow = null, + tablet = null; + + function createNewEntity(requestedProperties) { + var dimensions = requestedProperties.dimensions ? requestedProperties.dimensions : DEFAULT_DIMENSIONS; + var position = getPositionToCreateEntity(); + var entityID = null; + + var properties = {}; + + copyProperties(properties, DEFAULT_ENTITY_PROPERTIES.All); + + var type = requestedProperties.type; + if (type === "Box" || type === "Sphere") { + copyProperties(properties, DEFAULT_ENTITY_PROPERTIES.Shape); + } else { + copyProperties(properties, DEFAULT_ENTITY_PROPERTIES[type]); + } + + // We apply the requested properties first so that they take priority over any default properties. + copyProperties(properties, requestedProperties); + + if (properties.dynamic) { + copyProperties(properties, DEFAULT_DYNAMIC_PROPERTIES); + } else { + copyProperties(properties, DEFAULT_NON_DYNAMIC_PROPERTIES); + } + + + if (position !== null && position !== undefined) { + 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", "Image", "Web", "Material"]; + 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 }; + registration = DEFAULT_REGISTRATION; + } + + var orientation = properties.orientation; + if (orientation === undefined) { + properties.orientation = MyAvatar.orientation; + var DEFAULT_ORIENTATION = properties.orientation; + orientation = DEFAULT_ORIENTATION; + } else { + // If the orientation is already defined, we perform the corresponding rotation assuming that + // our start referential is the avatar referential. + properties.orientation = Quat.multiply(MyAvatar.orientation, properties.orientation); + var DEFAULT_ORIENTATION = properties.orientation; + orientation = DEFAULT_ORIENTATION; + } + + position = adjustPositionPerBoundingBox(position, direction, registration, dimensions, orientation); + } + + position = grid.snapToSurface(grid.snapToGrid(position, false, dimensions), dimensions); + properties.position = position; + + if (!properties.grab) { + properties.grab = {}; + if (Menu.isOptionChecked(MENU_CREATE_ENTITIES_GRABBABLE) && + !(properties.type === "Zone" || properties.type === "Light" || properties.type === "ParticleEffect" || properties.type === "Web")) { + properties.grab.grabbable = true; + } else { + properties.grab.grabbable = false; + } + } + + if (type === "Model") { + properties.visible = false; + } + + entityID = Entities.addEntity(properties); + + var dimensionsCheckCallback = function(){ + 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", "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(false, this); + } else if (dimensionsCheckCount < MAX_DIMENSIONS_CHECKS) { + Script.setTimeout(dimensionsCheckFunction, DIMENSIONS_CHECK_INTERVAL); + } + }; + Script.setTimeout(dimensionsCheckFunction, DIMENSIONS_CHECK_INTERVAL); + } + } + // Make sure the entity is loaded before we try to figure out + // its dimensions. + var MAX_LOADED_CHECKS = 10; + var LOADED_CHECK_INTERVAL = 100; + var isLoadedCheckCount = 0; + var entityIsLoadedCheck = function() { + isLoadedCheckCount++; + if (isLoadedCheckCount === MAX_LOADED_CHECKS || Entities.isLoaded(entityID)) { + var naturalDimensions = Entities.getEntityProperties(entityID, "naturalDimensions").naturalDimensions + Entities.editEntity(entityID, { + visible: true, + dimensions: naturalDimensions + }) + dimensionsCheckCallback(); + return; + } + Script.setTimeout(entityIsLoadedCheck, LOADED_CHECK_INTERVAL); + } + Script.setTimeout(entityIsLoadedCheck, LOADED_CHECK_INTERVAL); + + SelectionManager.addEntity(entityID, false, this); + SelectionManager.saveProperties(); + pushCommandForSelections([{ + entityID: entityID, + properties: properties + }], [], true); + + } else { + Window.notifyEditError("Can't create " + properties.type + ": " + + properties.type + " would be out of bounds."); + } + + selectionManager.clearSelections(this); + entityListTool.sendUpdate(); + selectionManager.setSelections([entityID], this); + + Window.setFocus(); + + return entityID; + } + + function closeExistingDialogWindow() { + if (dialogWindow) { + dialogWindow.close(); + dialogWindow = null; + } + } + + function cleanup() { + that.setActive(false); + if (tablet) { + tablet.removeButton(activeButton); + } + if (systemToolbar) { + systemToolbar.removeButton(EDIT_TOGGLE_BUTTON); + } + } + + var buttonHandlers = {}; // only used to tablet mode + + function addButton(name, handler) { + buttonHandlers[name] = handler; + } + + var SHAPE_TYPE_NONE = 0; + var SHAPE_TYPE_SIMPLE_HULL = 1; + var SHAPE_TYPE_SIMPLE_COMPOUND = 2; + var SHAPE_TYPE_STATIC_MESH = 3; + var SHAPE_TYPE_BOX = 4; + var SHAPE_TYPE_SPHERE = 5; + var DYNAMIC_DEFAULT = false; + + var MATERIAL_MODE_UV = 0; + var MATERIAL_MODE_PROJECTED = 1; + + function handleNewModelDialogResult(result) { + if (result) { + var url = result.url; + var shapeType; + switch (result.collisionShapeIndex) { + case SHAPE_TYPE_SIMPLE_HULL: + shapeType = "simple-hull"; + break; + case SHAPE_TYPE_SIMPLE_COMPOUND: + shapeType = "simple-compound"; + break; + case SHAPE_TYPE_STATIC_MESH: + shapeType = "static-mesh"; + break; + case SHAPE_TYPE_BOX: + shapeType = "box"; + break; + case SHAPE_TYPE_SPHERE: + shapeType = "sphere"; + break; + default: + shapeType = "none"; + } + + var dynamic = result.dynamic !== null ? result.dynamic : DYNAMIC_DEFAULT; + if (shapeType === "static-mesh" && dynamic) { + // The prompt should prevent this case + print("Error: model cannot be both static mesh and dynamic. This should never happen."); + } else if (url) { + createNewEntity({ + type: "Model", + modelURL: url, + shapeType: shapeType, + grab: { + grabbable: result.grabbable + }, + dynamic: dynamic, + }); + } + } + } + + function handleNewMaterialDialogResult(result) { + if (result) { + var materialURL = result.textInput; + //var materialMappingMode; + //switch (result.comboBox) { + // case MATERIAL_MODE_PROJECTED: + // materialMappingMode = "projected"; + // break; + // default: + // shapeType = "uv"; + //} + var materialData = ""; + if (materialURL.startsWith("materialData")) { + materialData = JSON.stringify({ + "materials": {} + }); + } + + var DEFAULT_LAYERED_MATERIAL_PRIORITY = 1; + if (materialURL) { + createNewEntity({ + type: "Material", + materialURL: materialURL, + //materialMappingMode: materialMappingMode, + priority: DEFAULT_LAYERED_MATERIAL_PRIORITY, + materialData: materialData + }); + } + } + } + + function fromQml(message) { // messages are {method, params}, like json-rpc. See also sendToQml. + var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); + tablet.popFromStack(); + switch (message.method) { + case "newModelDialogAdd": + handleNewModelDialogResult(message.params); + closeExistingDialogWindow(); + break; + case "newModelDialogCancel": + closeExistingDialogWindow(); + break; + case "newEntityButtonClicked": + buttonHandlers[message.params.buttonName](); + break; + case "newMaterialDialogAdd": + handleNewMaterialDialogResult(message.params); + closeExistingDialogWindow(); + break; + case "newMaterialDialogCancel": + closeExistingDialogWindow(); + break; + } + } + + var entitiesToDelete = []; + var deletedEntityTimer = null; + var DELETE_ENTITY_TIMER_TIMEOUT = 100; + + function checkDeletedEntityAndUpdate(entityID) { + // Allow for multiple entity deletes before updating the entities selected. + entitiesToDelete.push(entityID); + if (deletedEntityTimer !== null) { + Script.clearTimeout(deletedEntityTimer); + } + deletedEntityTimer = Script.setTimeout(function () { + if (entitiesToDelete.length > 0) { + selectionManager.removeEntities(entitiesToDelete, this); + } + entityListTool.removeEntities(entitiesToDelete, selectionManager.selections); + entitiesToDelete = []; + deletedEntityTimer = null; + }, DELETE_ENTITY_TIMER_TIMEOUT); + } + + function initialize() { + Script.scriptEnding.connect(cleanup); + Window.domainChanged.connect(function () { + if (isActive) { + tablet.gotoHomeScreen(); + } + that.setActive(false); + that.clearEntityList(); + checkEditPermissionsAndUpdate(); + }); + + HMD.displayModeChanged.connect(function() { + if (isActive) { + tablet.gotoHomeScreen(); + } + that.setActive(false); + }); + + Entities.canAdjustLocksChanged.connect(function (canAdjustLocks) { + if (isActive && !canAdjustLocks) { + that.setActive(false); + } + checkEditPermissionsAndUpdate(); + }); + + Entities.canRezChanged.connect(checkEditPermissionsAndUpdate); + Entities.canRezTmpChanged.connect(checkEditPermissionsAndUpdate); + Entities.canRezCertifiedChanged.connect(checkEditPermissionsAndUpdate); + Entities.canRezTmpCertifiedChanged.connect(checkEditPermissionsAndUpdate); + var hasRezPermissions = (Entities.canRez() || Entities.canRezTmp() || Entities.canRezCertified() || Entities.canRezTmpCertified()); + + Entities.deletingEntity.connect(checkDeletedEntityAndUpdate); + + var createButtonIconRsrc = (hasRezPermissions ? CREATE_ENABLED_ICON : CREATE_DISABLED_ICON); + tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); + activeButton = tablet.addButton({ + captionColor: hasRezPermissions ? "#ffffff" : "#888888", + icon: createButtonIconRsrc, + activeIcon: "icons/tablet-icons/edit-a.svg", + text: "CREATE", + sortOrder: 10 + }); + createButton = activeButton; + tablet.screenChanged.connect(function (type, url) { + var isGoingToHomescreenOnDesktop = (!shouldUseEditTabletApp() && + (url === 'hifi/tablet/TabletHome.qml' || url === '')); + if (isActive && (type !== "QML" || url !== Script.resolvePath("qml/Edit.qml")) && !isGoingToHomescreenOnDesktop) { + that.setActive(false); + } + }); + tablet.fromQml.connect(fromQml); + createToolsWindow.fromQml.addListener(fromQml); + + createButton.clicked.connect(function() { + if ( ! (Entities.canRez() || Entities.canRezTmp() || Entities.canRezCertified() || Entities.canRezTmpCertified()) ) { + Window.notifyEditError(INSUFFICIENT_PERMISSIONS_ERROR_MSG); + return; + } + + that.toggle(); + }); + + addButton("importEntitiesButton", function() { + Window.browseChanged.connect(onFileOpenChanged); + Window.browseAsync("Select Model to Import", "", "*.json"); + }); + + addButton("openAssetBrowserButton", function() { + Window.showAssetServer(); + }); + function createNewEntityDialogButtonCallback(entityType) { + return function() { + if (shouldUseEditTabletApp()) { + // tablet version of new-model dialog + var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); + tablet.pushOntoStack(Script.resolvePath("qml/New" + entityType + "Dialog.qml")); + } else { + closeExistingDialogWindow(); + var qmlPath = Script.resolvePath("qml/New" + entityType + "Window.qml"); + var DIALOG_WINDOW_SIZE = { x: 500, y: 300 }; + dialogWindow = Desktop.createWindow(qmlPath, { + title: "New " + entityType + " Entity", + additionalFlags: Desktop.ALWAYS_ON_TOP | Desktop.CLOSE_BUTTON_HIDES, + presentationMode: Desktop.PresentationMode.NATIVE, + size: DIALOG_WINDOW_SIZE, + visible: true + }); + dialogWindow.fromQml.connect(fromQml); + } + }; + } + + addButton("newModelButton", createNewEntityDialogButtonCallback("Model")); + + addButton("newShapeButton", function () { + createNewEntity({ + type: "Shape", + shape: "Cube", + }); + }); + + addButton("newLightButton", function () { + createNewEntity({ + type: "Light", + }); + }); + + addButton("newTextButton", function () { + createNewEntity({ + type: "Text", + }); + }); + + addButton("newImageButton", function () { + createNewEntity({ + type: "Image", + }); + }); + + addButton("newWebButton", function () { + createNewEntity({ + type: "Web", + }); + }); + + addButton("newZoneButton", function () { + createNewEntity({ + type: "Zone", + }); + }); + + addButton("newParticleButton", function () { + createNewEntity({ + type: "ParticleEffect", + }); + }); + + addButton("newMaterialButton", createNewEntityDialogButtonCallback("Material")); + + var deactivateCreateIfDesktopWindowsHidden = function() { + if (!shouldUseEditTabletApp() && !entityListTool.isVisible() && !createToolsWindow.isVisible()) { + that.setActive(false); + } + }; + entityListTool.interactiveWindowHidden.addListener(this, deactivateCreateIfDesktopWindowsHidden); + createToolsWindow.interactiveWindowHidden.addListener(this, deactivateCreateIfDesktopWindowsHidden); + + that.setActive(false); + } + + that.clearEntityList = function () { + entityListTool.clearEntityList(); + }; + + that.toggle = function () { + that.setActive(!isActive); + if (!isActive) { + tablet.gotoHomeScreen(); + } + }; + + that.setActive = function (active) { + ContextOverlay.enabled = !active; + Settings.setValue(EDIT_SETTING, active); + if (active) { + Controller.captureEntityClickEvents(); + } else { + Controller.releaseEntityClickEvents(); + + closeExistingDialogWindow(); + } + if (active === isActive) { + return; + } + if (active && !Entities.canRez() && !Entities.canRezTmp() && !Entities.canRezCertified() && !Entities.canRezTmpCertified()) { + Window.notifyEditError(INSUFFICIENT_PERMISSIONS_ERROR_MSG); + return; + } + Messages.sendLocalMessage("edit-events", JSON.stringify({ + enabled: active + })); + isActive = active; + activeButton.editProperties({isActive: isActive}); + undoHistory.setEnabled(isActive); + + var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); + + if (!isActive) { + entityListTool.setVisible(false); + gridTool.setVisible(false); + grid.setEnabled(false); + propertiesTool.setVisible(false); + selectionManager.clearSelections(this); + cameraManager.disable(); + selectionDisplay.disableTriggerMapping(); + tablet.landscape = false; + Controller.disableMapping(CONTROLLER_MAPPING_NAME); + } else { + if (shouldUseEditTabletApp()) { + tablet.loadQMLSource(Script.resolvePath("qml/Edit.qml"), true); + } else { + // make other apps inactive while in desktop mode + tablet.gotoHomeScreen(); + } + UserActivityLogger.enabledEdit(); + entityListTool.setVisible(true); + entityListTool.sendUpdate(); + gridTool.setVisible(true); + grid.setEnabled(true); + propertiesTool.setVisible(true); + selectionDisplay.enableTriggerMapping(); + print("starting tablet in landscape mode"); + tablet.landscape = true; + Controller.enableMapping(CONTROLLER_MAPPING_NAME); + // 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(); + } + entityIconOverlayManager.setVisible(isActive && Menu.isOptionChecked(MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE)); + Entities.setDrawZoneBoundaries(isActive && Menu.isOptionChecked(MENU_SHOW_ZONES_IN_EDIT_MODE)); + }; + + initialize(); + return that; +})(); + +var selectedEntityID; +var orientation; +var intersection; + + +function rayPlaneIntersection(pickRay, point, normal) { // + // + // This version of the test returns the intersection of a line with a plane + // + var collides = Vec3.dot(pickRay.direction, normal); + + var d = -Vec3.dot(point, normal); + var t = -(Vec3.dot(pickRay.origin, normal) + d) / collides; + + return Vec3.sum(pickRay.origin, Vec3.multiply(pickRay.direction, t)); +} + +function rayPlaneIntersection2(pickRay, point, normal) { + // + // This version of the test returns false if the ray is directed away from the plane + // + var collides = Vec3.dot(pickRay.direction, normal); + var d = -Vec3.dot(point, normal); + var t = -(Vec3.dot(pickRay.origin, normal) + d) / collides; + if (t < 0.0) { + return false; + } else { + return Vec3.sum(pickRay.origin, Vec3.multiply(pickRay.direction, t)); + } +} + +function findClickedEntity(event) { + var pickZones = event.isControl; + + if (pickZones) { + Entities.setZonesArePickable(true); + } + + var pickRay = Camera.computePickRay(event.x, event.y); + var tabletIDs = getMainTabletIDs(); + if (tabletIDs.length > 0) { + var overlayResult = Overlays.findRayIntersection(pickRay, true, tabletIDs); + if (overlayResult.intersects) { + return null; + } + } + + var entityResult = Entities.findRayIntersection(pickRay, true); // want precision picking + var iconResult = entityIconOverlayManager.findRayIntersection(pickRay); + iconResult.accurate = true; + + if (pickZones) { + Entities.setZonesArePickable(false); + } + + var result; + + if (iconResult.intersects) { + result = iconResult; + } else if (entityResult.intersects) { + result = entityResult; + } else { + return null; + } + + if (!result.accurate) { + return null; + } + + var foundEntity = result.entityID; + return { + pickRay: pickRay, + entityID: foundEntity, + intersection: result.intersection + }; +} + +// Handles selections on overlays while in edit mode by querying entities from +// entityIconOverlayManager. +function handleOverlaySelectionToolUpdates(channel, message, sender) { + var wantDebug = false; + if (sender !== MyAvatar.sessionUUID || channel !== 'entityToolUpdates') + return; + + var data = JSON.parse(message); + + if (data.method === "selectOverlay") { + if (!selectionDisplay.triggered() || selectionDisplay.triggeredHand === data.hand) { + if (wantDebug) { + print("setting selection to overlay " + data.overlayID); + } + var entity = entityIconOverlayManager.findEntity(data.overlayID); + + if (entity !== null) { + selectionManager.setSelections([entity], this); + } + } + } +} + +function handleMessagesReceived(channel, message, sender) { + switch( channel ){ + case 'entityToolUpdates': { + handleOverlaySelectionToolUpdates( channel, message, sender ); + break; + } + default: { + return; + } + } +} + +Messages.subscribe("entityToolUpdates"); +Messages.messageReceived.connect(handleMessagesReceived); + +var mouseHasMovedSincePress = false; +var mousePressStartTime = 0; +var mousePressStartPosition = { + x: 0, + y: 0 +}; +var mouseDown = false; + +function mousePressEvent(event) { + mouseDown = true; + mousePressStartPosition = { + x: event.x, + y: event.y + }; + mousePressStartTime = Date.now(); + mouseHasMovedSincePress = false; + mouseCapturedByTool = false; + + if (propertyMenu.mousePressEvent(event) || progressDialog.mousePressEvent(event)) { + mouseCapturedByTool = true; + return; + } + if (isActive) { + if (cameraManager.mousePressEvent(event) || selectionDisplay.mousePressEvent(event)) { + // Event handled; do nothing. + return; + } + } +} + +var mouseCapturedByTool = false; +var lastMousePosition = null; +var CLICK_TIME_THRESHOLD = 500 * 1000; // 500 ms +var CLICK_MOVE_DISTANCE_THRESHOLD = 20; +var IDLE_MOUSE_TIMEOUT = 200; + +var lastMouseMoveEvent = null; + +function mouseMoveEventBuffered(event) { + lastMouseMoveEvent = event; +} + +function mouseMove(event) { + if (mouseDown && !mouseHasMovedSincePress) { + var timeSincePressMicro = Date.now() - mousePressStartTime; + + var dX = mousePressStartPosition.x - event.x; + var dY = mousePressStartPosition.y - event.y; + var sqDist = (dX * dX) + (dY * dY); + + // If less than CLICK_TIME_THRESHOLD has passed since the mouse click AND the mouse has moved + // less than CLICK_MOVE_DISTANCE_THRESHOLD distance, then don't register this as a mouse move + // yet. The goal is to provide mouse clicks that are more lenient to small movements. + if (timeSincePressMicro < CLICK_TIME_THRESHOLD && sqDist < CLICK_MOVE_DISTANCE_THRESHOLD) { + return; + } + mouseHasMovedSincePress = true; + } + + if (!isActive) { + return; + } + + // allow the selectionDisplay and cameraManager to handle the event first, if it doesn't handle it, then do our own thing + if (selectionDisplay.mouseMoveEvent(event) || propertyMenu.mouseMoveEvent(event) || cameraManager.mouseMoveEvent(event)) { + return; + } + + lastMousePosition = { + x: event.x, + y: event.y + }; +} + +function mouseReleaseEvent(event) { + mouseDown = false; + + if (lastMouseMoveEvent) { + mouseMove(lastMouseMoveEvent); + lastMouseMoveEvent = null; + } + if (propertyMenu.mouseReleaseEvent(event)) { + return true; + } + if (isActive && selectionManager.hasSelection()) { + tooltip.show(false); + } + if (mouseCapturedByTool) { + + return; + } + + cameraManager.mouseReleaseEvent(event); + + if (!mouseHasMovedSincePress) { + mouseClickEvent(event); + } +} + +function wasTabletOrEditHandleClicked(event) { + var rayPick = Camera.computePickRay(event.x, event.y); + var result = Overlays.findRayIntersection(rayPick, true); + if (result.intersects) { + var overlayID = result.overlayID; + var tabletIDs = getMainTabletIDs(); + if (tabletIDs.indexOf(overlayID) >= 0) { + return true; + } else if (selectionDisplay.isEditHandle(overlayID)) { + return true; + } + } + return false; +} + +function mouseClickEvent(event) { + var wantDebug = false; + var result, properties, tabletClicked; + if (isActive && event.isLeftButton) { + result = findClickedEntity(event); + var tabletOrEditHandleClicked = wasTabletOrEditHandleClicked(event); + if (tabletOrEditHandleClicked) { + return; + } + + if (result === null || result === undefined) { + if (!event.isShifted) { + selectionManager.clearSelections(this); + } + return; + } + toolBar.setActive(true); + var pickRay = result.pickRay; + var foundEntity = result.entityID; + if (HMD.tabletID && foundEntity === HMD.tabletID) { + return; + } + properties = Entities.getEntityProperties(foundEntity); + var halfDiagonal = Vec3.length(properties.dimensions) / 2.0; + + if (wantDebug) { + print("Checking properties: " + properties.id + " " + " - Half Diagonal:" + halfDiagonal); + } + // P P - Model + // /| A - Palm + // / | d B - unit vector toward tip + // / | X - base of the perpendicular line + // A---X----->B d - distance fom axis + // x x - distance from A + // + // |X-A| = (P-A).B + // X === A + ((P-A).B)B + // d = |P-X| + + var A = pickRay.origin; + var B = Vec3.normalize(pickRay.direction); + var P = properties.position; + + var x = Vec3.dot(Vec3.subtract(P, A), B); + + var angularSize = 2 * Math.atan(halfDiagonal / Vec3.distance(Camera.getPosition(), properties.position)) * + 180 / Math.PI; + + var sizeOK = (allowLargeModels || angularSize < MAX_ANGULAR_SIZE) && + (allowSmallModels || angularSize > MIN_ANGULAR_SIZE); + + if (0 < x && sizeOK) { + selectedEntityID = foundEntity; + orientation = MyAvatar.orientation; + intersection = rayPlaneIntersection(pickRay, P, Quat.getForward(orientation)); + + if (!event.isShifted) { + selectionManager.setSelections([foundEntity], this); + } else { + selectionManager.addEntity(foundEntity, true, this); + } + selectionManager.saveProperties(); + + if (wantDebug) { + print("Model selected: " + foundEntity); + } + selectionDisplay.select(selectedEntityID, event); + + if (Menu.isOptionChecked(MENU_AUTO_FOCUS_ON_SELECT)) { + cameraManager.enable(); + cameraManager.focus(selectionManager.worldPosition, + selectionManager.worldDimensions, + Menu.isOptionChecked(MENU_EASE_ON_FOCUS)); + } + } + } else if (event.isRightButton) { + result = findClickedEntity(event); + if (result) { + if (SHOULD_SHOW_PROPERTY_MENU !== true) { + return; + } + properties = Entities.getEntityProperties(result.entityID); + if (properties.marketplaceID) { + propertyMenu.marketplaceID = properties.marketplaceID; + propertyMenu.updateMenuItemText(showMenuItem, "Show in Marketplace"); + } else { + propertyMenu.marketplaceID = null; + propertyMenu.updateMenuItemText(showMenuItem, "No marketplace info"); + } + propertyMenu.setPosition(event.x, event.y); + propertyMenu.show(); + } else { + propertyMenu.hide(); + } + } +} + +Controller.mousePressEvent.connect(mousePressEvent); +Controller.mouseMoveEvent.connect(mouseMoveEventBuffered); +Controller.mouseReleaseEvent.connect(mouseReleaseEvent); + + +// In order for editVoxels and editModels to play nice together, they each check to see if a "delete" menu item already +// exists. If it doesn't they add it. If it does they don't. They also only delete the menu item if they were the one that +// added it. +var modelMenuAddedDelete = false; +var originalLightsArePickable = Entities.getLightsArePickable(); + +function setupModelMenus() { + // adj our menuitems + Menu.addMenuItem({ + menuName: "Edit", + menuItemName: "Undo", + shortcutKey: 'Ctrl+Z', + position: 0, + }); + Menu.addMenuItem({ + menuName: "Edit", + menuItemName: "Redo", + shortcutKey: 'Ctrl+Y', + position: 1, + }); + + Menu.addMenuItem({ + menuName: "Edit", + menuItemName: "Entities", + isSeparator: true + }); + if (!Menu.menuItemExists("Edit", "Delete")) { + Menu.addMenuItem({ + menuName: "Edit", + menuItemName: "Delete", + shortcutKeyEvent: { + text: "delete" + }, + afterItem: "Entities", + }); + modelMenuAddedDelete = true; + } + + Menu.addMenuItem({ + menuName: "Edit", + menuItemName: "Parent Entity to Last", + afterItem: "Entities" + }); + + Menu.addMenuItem({ + menuName: "Edit", + menuItemName: "Unparent Entity", + afterItem: "Parent Entity to Last" + }); + + Menu.addMenuItem({ + menuName: GRABBABLE_ENTITIES_MENU_CATEGORY, + menuItemName: MENU_CREATE_ENTITIES_GRABBABLE, + afterItem: "Unparent Entity", + isCheckable: true, + isChecked: Settings.getValue(SETTING_EDIT_PREFIX + MENU_CREATE_ENTITIES_GRABBABLE, true) + }); + + Menu.addMenuItem({ + menuName: "Edit", + menuItemName: MENU_ALLOW_SELECTION_LARGE, + afterItem: MENU_CREATE_ENTITIES_GRABBABLE, + isCheckable: true, + isChecked: Settings.getValue(SETTING_EDIT_PREFIX + MENU_ALLOW_SELECTION_LARGE, true) + }); + Menu.addMenuItem({ + menuName: "Edit", + menuItemName: MENU_ALLOW_SELECTION_SMALL, + afterItem: MENU_ALLOW_SELECTION_LARGE, + isCheckable: true, + isChecked: Settings.getValue(SETTING_EDIT_PREFIX + MENU_ALLOW_SELECTION_SMALL, true) + }); + Menu.addMenuItem({ + menuName: "Edit", + menuItemName: MENU_ALLOW_SELECTION_LIGHTS, + afterItem: MENU_ALLOW_SELECTION_SMALL, + isCheckable: true, + isChecked: Settings.getValue(SETTING_EDIT_PREFIX + MENU_ALLOW_SELECTION_LIGHTS, false) + }); + Menu.addMenuItem({ + menuName: "Edit", + menuItemName: "Select All Entities In Box", + afterItem: "Allow Selecting of Lights" + }); + Menu.addMenuItem({ + menuName: "Edit", + menuItemName: "Select All Entities Touching Box", + afterItem: "Select All Entities In Box" + }); + + Menu.addMenuItem({ + menuName: "Edit", + menuItemName: "Export Entities", + afterItem: "Entities" + }); + Menu.addMenuItem({ + menuName: "Edit", + menuItemName: "Import Entities", + afterItem: "Export Entities" + }); + Menu.addMenuItem({ + menuName: "Edit", + menuItemName: "Import Entities from URL", + afterItem: "Import Entities" + }); + + Menu.addMenuItem({ + menuName: "Edit", + menuItemName: MENU_AUTO_FOCUS_ON_SELECT, + isCheckable: true, + isChecked: Settings.getValue(SETTING_AUTO_FOCUS_ON_SELECT) === "true" + }); + Menu.addMenuItem({ + menuName: "Edit", + menuItemName: MENU_EASE_ON_FOCUS, + afterItem: MENU_AUTO_FOCUS_ON_SELECT, + isCheckable: true, + isChecked: Settings.getValue(SETTING_EASE_ON_FOCUS) === "true" + }); + Menu.addMenuItem({ + menuName: "Edit", + menuItemName: MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE, + afterItem: MENU_EASE_ON_FOCUS, + isCheckable: true, + isChecked: Settings.getValue(SETTING_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE) !== "false" + }); + Menu.addMenuItem({ + menuName: "Edit", + menuItemName: MENU_SHOW_ZONES_IN_EDIT_MODE, + afterItem: MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE, + isCheckable: true, + isChecked: Settings.getValue(SETTING_SHOW_ZONES_IN_EDIT_MODE) !== "false" + }); + + Entities.setLightsArePickable(false); +} + +setupModelMenus(); // do this when first running our script. + +function cleanupModelMenus() { + Menu.removeMenuItem("Edit", "Undo"); + Menu.removeMenuItem("Edit", "Redo"); + + Menu.removeSeparator("Edit", "Entities"); + if (modelMenuAddedDelete) { + // delete our menuitems + Menu.removeMenuItem("Edit", "Delete"); + } + + Menu.removeMenuItem("Edit", "Parent Entity to Last"); + Menu.removeMenuItem("Edit", "Unparent Entity"); + Menu.removeMenuItem("Edit", "Allow Selecting of Large Models"); + Menu.removeMenuItem("Edit", "Allow Selecting of Small Models"); + Menu.removeMenuItem("Edit", "Allow Selecting of Lights"); + Menu.removeMenuItem("Edit", "Select All Entities In Box"); + Menu.removeMenuItem("Edit", "Select All Entities Touching Box"); + + Menu.removeMenuItem("Edit", "Export Entities"); + Menu.removeMenuItem("Edit", "Import Entities"); + Menu.removeMenuItem("Edit", "Import Entities from URL"); + + Menu.removeMenuItem("Edit", MENU_AUTO_FOCUS_ON_SELECT); + Menu.removeMenuItem("Edit", MENU_EASE_ON_FOCUS); + Menu.removeMenuItem("Edit", MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE); + Menu.removeMenuItem("Edit", MENU_SHOW_ZONES_IN_EDIT_MODE); + Menu.removeMenuItem("Edit", MENU_CREATE_ENTITIES_GRABBABLE); +} + +Script.scriptEnding.connect(function () { + toolBar.setActive(false); + Settings.setValue(SETTING_AUTO_FOCUS_ON_SELECT, Menu.isOptionChecked(MENU_AUTO_FOCUS_ON_SELECT)); + Settings.setValue(SETTING_EASE_ON_FOCUS, Menu.isOptionChecked(MENU_EASE_ON_FOCUS)); + Settings.setValue(SETTING_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE, Menu.isOptionChecked(MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE)); + Settings.setValue(SETTING_SHOW_ZONES_IN_EDIT_MODE, Menu.isOptionChecked(MENU_SHOW_ZONES_IN_EDIT_MODE)); + + Settings.setValue(SETTING_EDIT_PREFIX + MENU_ALLOW_SELECTION_LARGE, Menu.isOptionChecked(MENU_ALLOW_SELECTION_LARGE)); + Settings.setValue(SETTING_EDIT_PREFIX + MENU_ALLOW_SELECTION_SMALL, Menu.isOptionChecked(MENU_ALLOW_SELECTION_SMALL)); + Settings.setValue(SETTING_EDIT_PREFIX + MENU_ALLOW_SELECTION_LIGHTS, Menu.isOptionChecked(MENU_ALLOW_SELECTION_LIGHTS)); + + + progressDialog.cleanup(); + cleanupModelMenus(); + tooltip.cleanup(); + selectionDisplay.cleanup(); + entityShapeVisualizer.cleanup(); + Entities.setLightsArePickable(originalLightsArePickable); + + Overlays.deleteOverlay(importingSVOImageOverlay); + Overlays.deleteOverlay(importingSVOTextOverlay); + + Controller.keyReleaseEvent.disconnect(keyReleaseEvent); + Controller.keyPressEvent.disconnect(keyPressEvent); + + Controller.mousePressEvent.disconnect(mousePressEvent); + Controller.mouseMoveEvent.disconnect(mouseMoveEventBuffered); + Controller.mouseReleaseEvent.disconnect(mouseReleaseEvent); + + Messages.messageReceived.disconnect(handleMessagesReceived); + Messages.unsubscribe("entityToolUpdates"); + createButton = null; +}); + +var lastOrientation = null; +var lastPosition = null; + +// Do some stuff regularly, like check for placement of various overlays +Script.update.connect(function (deltaTime) { + progressDialog.move(); + selectionDisplay.checkControllerMove(); + var dOrientation = Math.abs(Quat.dot(Camera.orientation, lastOrientation) - 1); + var dPosition = Vec3.distance(Camera.position, lastPosition); + if (dOrientation > 0.001 || dPosition > 0.001) { + propertyMenu.hide(); + lastOrientation = Camera.orientation; + lastPosition = Camera.position; + } + if (lastMouseMoveEvent) { + mouseMove(lastMouseMoveEvent); + lastMouseMoveEvent = null; + } +}); + +function insideBox(center, dimensions, point) { + return (Math.abs(point.x - center.x) <= (dimensions.x / 2.0)) && + (Math.abs(point.y - center.y) <= (dimensions.y / 2.0)) && + (Math.abs(point.z - center.z) <= (dimensions.z / 2.0)); +} + +function selectAllEntitiesInCurrentSelectionBox(keepIfTouching) { + if (selectionManager.hasSelection()) { + // Get all entities touching the bounding box of the current selection + var boundingBoxCorner = Vec3.subtract(selectionManager.worldPosition, + Vec3.multiply(selectionManager.worldDimensions, 0.5)); + var entities = Entities.findEntitiesInBox(boundingBoxCorner, selectionManager.worldDimensions); + + if (!keepIfTouching) { + var isValid; + if (selectionManager.localPosition === null || selectionManager.localPosition === undefined) { + isValid = function (position) { + return insideBox(selectionManager.worldPosition, selectionManager.worldDimensions, position); + }; + } else { + isValid = function (position) { + var localPosition = Vec3.multiplyQbyV(Quat.inverse(selectionManager.localRotation), + Vec3.subtract(position, + selectionManager.localPosition)); + return insideBox(Vec3.ZERO, selectionManager.localDimensions, localPosition); + }; + } + for (var i = 0; i < entities.length; ++i) { + var properties = Entities.getEntityProperties(entities[i]); + if (!isValid(properties.position)) { + entities.splice(i, 1); + --i; + } + } + } + selectionManager.setSelections(entities, this); + } +} + +function sortSelectedEntities(selected) { + var sortedEntities = selected.slice(); + var begin = 0; + while (begin < sortedEntities.length) { + var elementRemoved = false; + var next = begin + 1; + while (next < sortedEntities.length) { + var beginID = sortedEntities[begin]; + var nextID = sortedEntities[next]; + + if (Entities.isChildOfParent(beginID, nextID)) { + sortedEntities[begin] = nextID; + sortedEntities[next] = beginID; + sortedEntities.splice(next, 1); + elementRemoved = true; + break; + } else if (Entities.isChildOfParent(nextID, beginID)) { + sortedEntities.splice(next, 1); + elementRemoved = true; + break; + } + next++; + } + if (!elementRemoved) { + begin++; + } + } + return sortedEntities; +} + +function recursiveDelete(entities, childrenList, deletedIDs, entityHostType) { + var wantDebug = false; + var entitiesLength = entities.length; + var initialPropertySets = Entities.getMultipleEntityProperties(entities); + var entityHostTypes = Entities.getMultipleEntityProperties(entities, 'entityHostType'); + for (var i = 0; i < entitiesLength; ++i) { + var entityID = entities[i]; + + if (entityHostTypes[i].entityHostType !== entityHostType) { + if (wantDebug) { + console.log("Skipping deletion of entity " + entityID + " with conflicting entityHostType: " + + entityHostTypes[i].entityHostType + ", expected: " + entityHostType); + } + continue; + } + + var children = Entities.getChildrenIDs(entityID); + var grandchildrenList = []; + recursiveDelete(children, grandchildrenList, deletedIDs, entityHostType); + childrenList.push({ + entityID: entityID, + properties: initialPropertySets[i], + children: grandchildrenList + }); + deletedIDs.push(entityID); + Entities.deleteEntity(entityID); + } +} + +function unparentSelectedEntities() { + if (SelectionManager.hasSelection()) { + var selectedEntities = selectionManager.selections; + var parentCheck = false; + + if (selectedEntities.length < 1) { + Window.notifyEditError("You must have an entity selected in order to unparent it."); + return; + } + selectedEntities.forEach(function (id, index) { + var parentId = Entities.getEntityProperties(id, ["parentID"]).parentID; + if (parentId !== null && parentId.length > 0 && parentId !== Uuid.NULL) { + parentCheck = true; + } + Entities.editEntity(id, {parentID: null}); + return true; + }); + if (parentCheck) { + if (selectedEntities.length > 1) { + Window.notify("Entities unparented"); + } else { + Window.notify("Entity unparented"); + } + } else { + if (selectedEntities.length > 1) { + Window.notify("Selected Entities have no parents"); + } else { + Window.notify("Selected Entity does not have a parent"); + } + } + } else { + Window.notifyEditError("You have nothing selected to unparent"); + } +} +function parentSelectedEntities() { + if (SelectionManager.hasSelection()) { + var selectedEntities = selectionManager.selections; + if (selectedEntities.length <= 1) { + Window.notifyEditError("You must have multiple entities selected in order to parent them"); + return; + } + var parentCheck = false; + var lastEntityId = selectedEntities[selectedEntities.length - 1]; + selectedEntities.forEach(function (id, index) { + if (lastEntityId !== id) { + var parentId = Entities.getEntityProperties(id, ["parentID"]).parentID; + if (parentId !== lastEntityId) { + parentCheck = true; + } + Entities.editEntity(id, {parentID: lastEntityId}); + } + }); + + if (parentCheck) { + Window.notify("Entities parented"); + } else { + Window.notify("Entities are already parented to last"); + } + } else { + Window.notifyEditError("You have nothing selected to parent"); + } +} +function deleteSelectedEntities() { + if (SelectionManager.hasSelection()) { + var deletedIDs = []; + + SelectionManager.saveProperties(); + var savedProperties = []; + var newSortedSelection = sortSelectedEntities(selectionManager.selections); + var entityHostTypes = Entities.getMultipleEntityProperties(newSortedSelection, 'entityHostType'); + for (var i = 0; i < newSortedSelection.length; ++i) { + var entityID = newSortedSelection[i]; + var initialProperties = SelectionManager.savedProperties[entityID]; + if (initialProperties.locked || + (initialProperties.avatarEntity && initialProperties.owningAvatarID !== MyAvatar.sessionUUID)) { + continue; + } + var children = Entities.getChildrenIDs(entityID); + var childList = []; + recursiveDelete(children, childList, deletedIDs, entityHostTypes[i].entityHostType); + savedProperties.push({ + entityID: entityID, + properties: initialProperties, + children: childList + }); + deletedIDs.push(entityID); + Entities.deleteEntity(entityID); + } + + if (savedProperties.length > 0) { + SelectionManager.clearSelections(this); + pushCommandForSelections([], savedProperties); + entityListTool.deleteEntities(deletedIDs); + } + } +} + +function toggleSelectedEntitiesLocked() { + if (SelectionManager.hasSelection()) { + var locked = !Entities.getEntityProperties(SelectionManager.selections[0], ["locked"]).locked; + for (var i = 0; i < selectionManager.selections.length; i++) { + var entityID = SelectionManager.selections[i]; + Entities.editEntity(entityID, { + locked: locked + }); + } + entityListTool.sendUpdate(); + selectionManager._update(false, this); + } +} + +function toggleSelectedEntitiesVisible() { + if (SelectionManager.hasSelection()) { + var visible = !Entities.getEntityProperties(SelectionManager.selections[0], ["visible"]).visible; + for (var i = 0; i < selectionManager.selections.length; i++) { + var entityID = SelectionManager.selections[i]; + Entities.editEntity(entityID, { + visible: visible + }); + } + entityListTool.sendUpdate(); + selectionManager._update(false, this); + } +} + +function onFileSaveChanged(filename) { + Window.saveFileChanged.disconnect(onFileSaveChanged); + if (filename !== "") { + var success = Clipboard.exportEntities(filename, selectionManager.selections); + if (!success) { + Window.notifyEditError("Export failed."); + } + } +} + +function onFileOpenChanged(filename) { + // disconnect the event, otherwise the requests will stack up + try { + // Not all calls to onFileOpenChanged() connect an event. + Window.browseChanged.disconnect(onFileOpenChanged); + } catch (e) { + // Ignore. + } + + var importURL = null; + if (filename !== "") { + importURL = filename; + if (!/^(http|https):\/\//.test(filename)) { + importURL = "file:///" + importURL; + } + } + if (importURL) { + if (!isActive && (Entities.canRez() && Entities.canRezTmp() && Entities.canRezCertified() && Entities.canRezTmpCertified())) { + toolBar.toggle(); + } + importSVO(importURL); + } +} + +function onPromptTextChanged(prompt) { + Window.promptTextChanged.disconnect(onPromptTextChanged); + if (prompt !== "") { + if (!isActive && (Entities.canRez() && Entities.canRezTmp() && Entities.canRezCertified() && Entities.canRezTmpCertified())) { + toolBar.toggle(); + } + importSVO(prompt); + } +} + +function handleMenuEvent(menuItem) { + if (menuItem === "Allow Selecting of Small Models") { + allowSmallModels = Menu.isOptionChecked("Allow Selecting of Small Models"); + } else if (menuItem === "Allow Selecting of Large Models") { + allowLargeModels = Menu.isOptionChecked("Allow Selecting of Large Models"); + } else if (menuItem === "Allow Selecting of Lights") { + Entities.setLightsArePickable(Menu.isOptionChecked("Allow Selecting of Lights")); + } else if (menuItem === "Delete") { + deleteSelectedEntities(); + } else if (menuItem === "Undo") { + undoHistory.undo(); + } else if (menuItem === "Redo") { + undoHistory.redo(); + } else if (menuItem === "Parent Entity to Last") { + parentSelectedEntities(); + } else if (menuItem === "Unparent Entity") { + unparentSelectedEntities(); + } else if (menuItem === "Export Entities") { + if (!selectionManager.hasSelection()) { + Window.notifyEditError("No entities have been selected."); + } else { + Window.saveFileChanged.connect(onFileSaveChanged); + Window.saveAsync("Select Where to Save", "", "*.json"); + } + } else if (menuItem === "Import Entities" || menuItem === "Import Entities from URL") { + if (menuItem === "Import Entities") { + Window.browseChanged.connect(onFileOpenChanged); + Window.browseAsync("Select Model to Import", "", "*.json"); + } else { + Window.promptTextChanged.connect(onPromptTextChanged); + Window.promptAsync("URL of SVO to import", ""); + } + } else if (menuItem === "Select All Entities In Box") { + selectAllEntitiesInCurrentSelectionBox(false); + } else if (menuItem === "Select All Entities Touching Box") { + selectAllEntitiesInCurrentSelectionBox(true); + } else if (menuItem === MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE) { + entityIconOverlayManager.setVisible(isActive && Menu.isOptionChecked(MENU_SHOW_LIGHTS_AND_PARTICLES_IN_EDIT_MODE)); + } else if (menuItem === MENU_SHOW_ZONES_IN_EDIT_MODE) { + Entities.setDrawZoneBoundaries(isActive && Menu.isOptionChecked(MENU_SHOW_ZONES_IN_EDIT_MODE)); + } else if (menuItem === MENU_CREATE_ENTITIES_GRABBABLE) { + Settings.setValue(SETTING_EDIT_PREFIX + menuItem, Menu.isOptionChecked(menuItem)); + } + tooltip.show(false); +} + +var HALF_TREE_SCALE = 16384; + +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 + delta)); + } else { + position = Vec3.sum(MyAvatar.position, Vec3.multiply(Quat.getForward(MyAvatar.orientation), CREATE_DISTANCE + delta)); + } + + if (position.x > HALF_TREE_SCALE || position.y > HALF_TREE_SCALE || position.z > HALF_TREE_SCALE) { + return null; + } + return position; +} + +function importSVO(importURL) { + if (!Entities.canRez() && !Entities.canRezTmp() && + !Entities.canRezCertified() && !Entities.canRezTmpCertified()) { + Window.notifyEditError(INSUFFICIENT_PERMISSIONS_IMPORT_ERROR_MSG); + return; + } + + Overlays.editOverlay(importingSVOTextOverlay, { + visible: true + }); + Overlays.editOverlay(importingSVOImageOverlay, { + visible: true + }); + + var success = Clipboard.importEntities(importURL); + + if (success) { + var VERY_LARGE = 10000; + var isLargeImport = Clipboard.getClipboardContentsLargestDimension() >= VERY_LARGE; + var position = Vec3.ZERO; + if (!isLargeImport) { + position = getPositionToCreateEntity(Clipboard.getClipboardContentsLargestDimension() / 2); + } + 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 deltaPosition = Vec3.ZERO; + var entityPositions = []; + var entityParentIDs = []; + + var propType = Entities.getEntityProperties(pastedEntityIDs[0], ["type"]).type; + var NO_ADJUST_ENTITY_TYPES = ["Zone", "Light", "ParticleEffect"]; + if (NO_ADJUST_ENTITY_TYPES.indexOf(propType) === -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. + for (var i = 0, length = pastedEntityIDs.length; i < length; i++) { + var curLoopEntityProps = Entities.getEntityProperties(pastedEntityIDs[i], ["position", "dimensions", + "registrationPoint", "rotation", "parentID"]); + var adjustedPosition = adjustPositionPerBoundingBox(targetPosition, targetDirection, + curLoopEntityProps.registrationPoint, curLoopEntityProps.dimensions, curLoopEntityProps.rotation); + var delta = Vec3.subtract(adjustedPosition, curLoopEntityProps.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] = curLoopEntityProps.position; + entityParentIDs[i] = curLoopEntityProps.parentID; + } + deltaPerpendicular = Vec3.multiply(1 / pastedEntityIDs.length, deltaPerpendicular); + deltaPosition = Vec3.sum(Vec3.multiply(deltaParallel, targetDirection), deltaPerpendicular); + } + + if (grid.getSnapToGrid()) { + var firstEntityProps = Entities.getEntityProperties(pastedEntityIDs[0], ["position", "dimensions", + "registrationPoint"]); + var positionPreSnap = Vec3.sum(deltaPosition, firstEntityProps.position); + position = grid.snapToSurface(grid.snapToGrid(positionPreSnap, false, firstEntityProps.dimensions, + firstEntityProps.registrationPoint), firstEntityProps.dimensions, firstEntityProps.registrationPoint); + deltaPosition = Vec3.subtract(position, firstEntityProps.position); + } + + if (!Vec3.equal(deltaPosition, Vec3.ZERO)) { + for (var editEntityIndex = 0, numEntities = pastedEntityIDs.length; editEntityIndex < numEntities; editEntityIndex++) { + if (Uuid.isNull(entityParentIDs[editEntityIndex])) { + Entities.editEntity(pastedEntityIDs[editEntityIndex], { + position: Vec3.sum(deltaPosition, entityPositions[editEntityIndex]) + }); + } + } + } + } + + if (isActive) { + selectionManager.setSelections(pastedEntityIDs, this); + } + } else { + Window.notifyEditError("Can't import entities: entities would be out of bounds."); + } + } else { + Window.notifyEditError("There was an error importing the entity file."); + } + + Overlays.editOverlay(importingSVOTextOverlay, { + visible: false + }); + Overlays.editOverlay(importingSVOImageOverlay, { + visible: false + }); +} +Window.svoImportRequested.connect(importSVO); + +Menu.menuItemEvent.connect(handleMenuEvent); + +var keyPressEvent = function (event) { + if (isActive) { + cameraManager.keyPressEvent(event); + } +}; +var keyReleaseEvent = function (event) { + if (isActive) { + cameraManager.keyReleaseEvent(event); + } +}; +Controller.keyReleaseEvent.connect(keyReleaseEvent); +Controller.keyPressEvent.connect(keyPressEvent); + +function deleteKey(value) { + if (value === 0) { // on release + deleteSelectedEntities(); + } +} +function deselectKey(value) { + if (value === 0) { // on release + selectionManager.clearSelections(this); + } +} +function toggleKey(value) { + if (value === 0) { // on release + selectionDisplay.toggleSpaceMode(); + } +} +function focusKey(value) { + if (value === 0) { // on release + cameraManager.enable(); + if (selectionManager.hasSelection()) { + cameraManager.focus(selectionManager.worldPosition, selectionManager.worldDimensions, + Menu.isOptionChecked(MENU_EASE_ON_FOCUS)); + } + } +} +function gridKey(value) { + if (value === 0) { // on release + if (selectionManager.hasSelection()) { + grid.moveToSelection(); + } + } +} +function recursiveAdd(newParentID, parentData) { + if (parentData.children !== undefined) { + var children = parentData.children; + for (var i = 0; i < children.length; i++) { + var childProperties = children[i].properties; + childProperties.parentID = newParentID; + var newChildID = Entities.addEntity(childProperties); + recursiveAdd(newChildID, children[i]); + } + } +} + +var UndoHistory = function(onUpdate) { + this.history = []; + // The current position is the index of the last executed action in the history array. + // + // -1 0 1 2 3 <- position + // A B C D <- actions in history + // + // If our lastExecutedIndex is 1, the last executed action is B. + // If we undo, we undo B (index 1). If we redo, we redo C (index 2). + this.lastExecutedIndex = -1; + this.enabled = true; + this.onUpdate = onUpdate; +}; + +UndoHistory.prototype.pushCommand = function(undoFn, undoArgs, redoFn, redoArgs) { + if (!this.enabled) { + return; + } + // Delete any history following the last executed action. + this.history.splice(this.lastExecutedIndex + 1); + this.history.push({ + undoFn: undoFn, + undoArgs: undoArgs, + redoFn: redoFn, + redoArgs: redoArgs + }); + this.lastExecutedIndex++; + + if (this.onUpdate) { + this.onUpdate(); + } +}; +UndoHistory.prototype.setEnabled = function(enabled) { + this.enabled = enabled; + if (this.onUpdate) { + this.onUpdate(); + } +}; +UndoHistory.prototype.canUndo = function() { + return this.enabled && this.lastExecutedIndex >= 0; +}; +UndoHistory.prototype.canRedo = function() { + return this.enabled && this.lastExecutedIndex < this.history.length - 1; +}; +UndoHistory.prototype.undo = function() { + if (!this.canUndo()) { + console.warn("Cannot undo action"); + return; + } + + var command = this.history[this.lastExecutedIndex]; + command.undoFn(command.undoArgs); + this.lastExecutedIndex--; + + if (this.onUpdate) { + this.onUpdate(); + } +}; +UndoHistory.prototype.redo = function() { + if (!this.canRedo()) { + console.warn("Cannot redo action"); + return; + } + + var command = this.history[this.lastExecutedIndex + 1]; + command.redoFn(command.redoArgs); + this.lastExecutedIndex++; + + if (this.onUpdate) { + this.onUpdate(); + } +}; + +function updateUndoRedoMenuItems() { + Menu.setMenuEnabled("Edit > Undo", undoHistory.canUndo()); + Menu.setMenuEnabled("Edit > Redo", undoHistory.canRedo()); +} +var undoHistory = new UndoHistory(updateUndoRedoMenuItems); +updateUndoRedoMenuItems(); + +// When an entity has been deleted we need a way to "undo" this deletion. Because it's not currently +// possible to create an entity with a specific id, earlier undo commands to the deleted entity +// will fail if there isn't a way to find the new entity id. +var DELETED_ENTITY_MAP = {}; + +function applyEntityProperties(data) { + var editEntities = data.editEntities; + var createEntities = data.createEntities; + var deleteEntities = data.deleteEntities; + var selectedEntityIDs = []; + var selectEdits = createEntities.length === 0 || !data.selectCreated; + var i, entityID, entityProperties; + for (i = 0; i < createEntities.length; i++) { + entityID = createEntities[i].entityID; + entityProperties = createEntities[i].properties; + var newEntityID = Entities.addEntity(entityProperties); + recursiveAdd(newEntityID, createEntities[i]); + DELETED_ENTITY_MAP[entityID] = newEntityID; + if (data.selectCreated) { + selectedEntityIDs.push(newEntityID); + } + } + for (i = 0; i < deleteEntities.length; i++) { + entityID = deleteEntities[i].entityID; + if (DELETED_ENTITY_MAP[entityID] !== undefined) { + entityID = DELETED_ENTITY_MAP[entityID]; + } + Entities.deleteEntity(entityID); + var index = selectedEntityIDs.indexOf(entityID); + if (index >= 0) { + selectedEntityIDs.splice(index, 1); + } + } + for (i = 0; i < editEntities.length; i++) { + entityID = editEntities[i].entityID; + if (DELETED_ENTITY_MAP[entityID] !== undefined) { + entityID = DELETED_ENTITY_MAP[entityID]; + } + entityProperties = editEntities[i].properties; + if (entityProperties !== null) { + Entities.editEntity(entityID, entityProperties); + } + if (selectEdits) { + selectedEntityIDs.push(entityID); + } + } + + // We might be getting an undo while edit.js is disabled. If that is the case, don't set + // our selections, causing the edit widgets to display. + if (isActive) { + selectionManager.setSelections(selectedEntityIDs, this); + selectionManager.saveProperties(); + } +} + +// For currently selected entities, push a command to the UndoStack that uses the current entity properties for the +// redo command, and the saved properties for the undo command. Also, include create and delete entity data. +function pushCommandForSelections(createdEntityData, deletedEntityData, doNotSaveEditProperties) { + doNotSaveEditProperties = false; + var undoData = { + editEntities: [], + createEntities: deletedEntityData || [], + deleteEntities: createdEntityData || [], + selectCreated: true + }; + var redoData = { + editEntities: [], + createEntities: createdEntityData || [], + deleteEntities: deletedEntityData || [], + selectCreated: true + }; + for (var i = 0; i < SelectionManager.selections.length; i++) { + var entityID = SelectionManager.selections[i]; + var initialProperties = SelectionManager.savedProperties[entityID]; + var currentProperties = null; + if (!initialProperties) { + continue; + } + + if (doNotSaveEditProperties) { + initialProperties = null; + } else { + currentProperties = Entities.getEntityProperties(entityID); + } + + undoData.editEntities.push({ + entityID: entityID, + properties: initialProperties + }); + redoData.editEntities.push({ + entityID: entityID, + properties: currentProperties + }); + } + undoHistory.pushCommand(applyEntityProperties, undoData, applyEntityProperties, redoData); +} + +var ServerScriptStatusMonitor = function(entityID, statusCallback) { + var self = this; + + self.entityID = entityID; + self.active = true; + self.sendRequestTimerID = null; + + var onStatusReceived = function(success, isRunning, status, errorInfo) { + if (self.active) { + statusCallback({ + statusRetrieved: success, + isRunning: isRunning, + status: status, + errorInfo: errorInfo + }); + self.sendRequestTimerID = Script.setTimeout(function() { + if (self.active) { + Entities.getServerScriptStatus(entityID, onStatusReceived); + } + }, 1000); + } + }; + self.stop = function() { + self.active = false; + }; + + Entities.getServerScriptStatus(entityID, onStatusReceived); +}; + +var PropertiesTool = function (opts) { + var that = {}; + + var webView = null; + webView = Tablet.getTablet("com.highfidelity.interface.tablet.system"); + webView.setVisible = function(value) {}; + + var visible = false; + + // This keeps track of the last entity ID that was selected. If multiple entities + // are selected or if no entity is selected this will be `null`. + var currentSelectedEntityID = null; + var statusMonitor = null; + var blockPropertyUpdates = false; + + that.setVisible = function (newVisible) { + visible = newVisible; + webView.setVisible(shouldUseEditTabletApp() && visible); + createToolsWindow.setVisible(!shouldUseEditTabletApp() && visible); + }; + + that.setVisible(false); + + function emitScriptEvent(data) { + var dataString = JSON.stringify(data); + webView.emitScriptEvent(dataString); + createToolsWindow.emitScriptEvent(dataString); + } + + function updateScriptStatus(info) { + info.type = "server_script_status"; + emitScriptEvent(info); + } + + function resetScriptStatus() { + updateScriptStatus({ + statusRetrieved: undefined, + isRunning: undefined, + status: "", + errorInfo: "" + }); + } + + that.setSpaceMode = function(spaceMode) { + emitScriptEvent({ + type: 'setSpaceMode', + spaceMode: spaceMode + }) + }; + + function updateSelections(selectionUpdated, caller) { + if (blockPropertyUpdates) { + return; + } + + var data = { + type: 'update', + spaceMode: selectionDisplay.getSpaceMode(), + isPropertiesToolUpdate: caller === this, + }; + + if (selectionUpdated) { + resetScriptStatus(); + + if (selectionManager.selections.length !== 1) { + if (statusMonitor !== null) { + statusMonitor.stop(); + statusMonitor = null; + } + currentSelectedEntityID = null; + } else if (currentSelectedEntityID !== selectionManager.selections[0]) { + if (statusMonitor !== null) { + statusMonitor.stop(); + } + var entityID = selectionManager.selections[0]; + currentSelectedEntityID = entityID; + statusMonitor = new ServerScriptStatusMonitor(entityID, updateScriptStatus); + } + } + + var selections = []; + for (var i = 0; i < selectionManager.selections.length; i++) { + var entity = {}; + entity.id = selectionManager.selections[i]; + entity.properties = Entities.getEntityProperties(selectionManager.selections[i]); + if (entity.properties.rotation !== undefined) { + entity.properties.rotation = Quat.safeEulerAngles(entity.properties.rotation); + } + if (entity.properties.localRotation !== undefined) { + entity.properties.localRotation = Quat.safeEulerAngles(entity.properties.localRotation); + } + if (entity.properties.emitOrientation !== undefined) { + entity.properties.emitOrientation = Quat.safeEulerAngles(entity.properties.emitOrientation); + } + if (entity.properties.keyLight !== undefined && entity.properties.keyLight.direction !== undefined) { + entity.properties.keyLight.direction = Vec3.toPolar(entity.properties.keyLight.direction); + entity.properties.keyLight.direction.z = 0.0; + } + selections.push(entity); + } + data.selections = selections; + + emitScriptEvent(data); + } + selectionManager.addEventListener(updateSelections, this); + + + var onWebEventReceived = function(data) { + try { + data = JSON.parse(data); + } catch(e) { + return; + } + var i, properties, dY, diff, newPosition; + if (data.type === "update") { + + if (data.properties || data.propertiesMap) { + var propertiesMap = data.propertiesMap; + if (propertiesMap === undefined) { + propertiesMap = [{ + entityIDs: data.ids, + properties: data.properties, + }]; + } + + var sendListUpdate = false; + propertiesMap.forEach(function(propertiesObject) { + var properties = propertiesObject.properties; + var updateEntityIDs = propertiesObject.entityIDs; + if (properties.dynamic === false) { + // this object is leaving dynamic, so we zero its velocities + properties.localVelocity = Vec3.ZERO; + properties.localAngularVelocity = Vec3.ZERO; + } + if (properties.rotation !== undefined) { + properties.rotation = Quat.fromVec3Degrees(properties.rotation); + } + if (properties.localRotation !== undefined) { + properties.localRotation = Quat.fromVec3Degrees(properties.localRotation); + } + if (properties.emitOrientation !== undefined) { + properties.emitOrientation = Quat.fromVec3Degrees(properties.emitOrientation); + } + if (properties.keyLight !== undefined && properties.keyLight.direction !== undefined) { + var currentKeyLightDirection = Vec3.toPolar(Entities.getEntityProperties(selectionManager.selections[0], ['keyLight.direction']).keyLight.direction); + if (properties.keyLight.direction.x === undefined) { + properties.keyLight.direction.x = currentKeyLightDirection.x; + } + if (properties.keyLight.direction.y === undefined) { + properties.keyLight.direction.y = currentKeyLightDirection.y; + } + properties.keyLight.direction = Vec3.fromPolar(properties.keyLight.direction.x, properties.keyLight.direction.y); + } + + updateEntityIDs.forEach(function (entityID) { + Entities.editEntity(entityID, properties); + }); + + if (properties.name !== undefined || properties.modelURL !== undefined || properties.materialURL !== undefined || + properties.visible !== undefined || properties.locked !== undefined) { + + sendListUpdate = true; + } + + }); + if (sendListUpdate) { + entityListTool.sendUpdate(); + } + } + + + if (data.onlyUpdateEntities) { + blockPropertyUpdates = true; + } else { + pushCommandForSelections(); + SelectionManager.saveProperties(); + } + selectionManager._update(false, this); + blockPropertyUpdates = false; + } else if (data.type === 'saveUserData' || data.type === 'saveMaterialData') { + data.ids.forEach(function(entityID) { + Entities.editEntity(entityID, data.properties); + }); + } else if (data.type === "showMarketplace") { + showMarketplace(); + } else if (data.type === "action") { + if (data.action === "moveSelectionToGrid") { + if (selectionManager.hasSelection()) { + selectionManager.saveProperties(); + dY = grid.getOrigin().y - (selectionManager.worldPosition.y - selectionManager.worldDimensions.y / 2); + diff = { + x: 0, + y: dY, + z: 0 + }; + for (i = 0; i < selectionManager.selections.length; i++) { + properties = selectionManager.savedProperties[selectionManager.selections[i]]; + newPosition = Vec3.sum(properties.position, diff); + Entities.editEntity(selectionManager.selections[i], { + position: newPosition + }); + } + pushCommandForSelections(); + selectionManager._update(false, this); + } + } else if (data.action === "moveAllToGrid") { + if (selectionManager.hasSelection()) { + selectionManager.saveProperties(); + for (i = 0; i < selectionManager.selections.length; i++) { + properties = selectionManager.savedProperties[selectionManager.selections[i]]; + var bottomY = properties.boundingBox.center.y - properties.boundingBox.dimensions.y / 2; + dY = grid.getOrigin().y - bottomY; + diff = { + x: 0, + y: dY, + z: 0 + }; + newPosition = Vec3.sum(properties.position, diff); + Entities.editEntity(selectionManager.selections[i], { + position: newPosition + }); + } + pushCommandForSelections(); + selectionManager._update(false, this); + } + } else if (data.action === "resetToNaturalDimensions") { + if (selectionManager.hasSelection()) { + selectionManager.saveProperties(); + for (i = 0; i < selectionManager.selections.length; i++) { + properties = selectionManager.savedProperties[selectionManager.selections[i]]; + var naturalDimensions = properties.naturalDimensions; + + // If any of the natural dimensions are not 0, resize + if (properties.type === "Model" && naturalDimensions.x === 0 && naturalDimensions.y === 0 && + naturalDimensions.z === 0) { + Window.notifyEditError("Cannot reset entity to its natural dimensions: Model URL" + + " is invalid or the model has not yet been loaded."); + } else { + Entities.editEntity(selectionManager.selections[i], { + dimensions: properties.naturalDimensions + }); + } + } + pushCommandForSelections(); + selectionManager._update(false, this); + } + } else if (data.action === "previewCamera") { + if (selectionManager.hasSelection()) { + Camera.mode = "entity"; + Camera.cameraEntity = selectionManager.selections[0]; + } + } else if (data.action === "rescaleDimensions") { + var multiplier = data.percentage / 100.0; + if (selectionManager.hasSelection()) { + selectionManager.saveProperties(); + for (i = 0; i < selectionManager.selections.length; i++) { + properties = selectionManager.savedProperties[selectionManager.selections[i]]; + Entities.editEntity(selectionManager.selections[i], { + dimensions: Vec3.multiply(multiplier, properties.dimensions) + }); + } + pushCommandForSelections(); + selectionManager._update(false, this); + } + } else if (data.action === "reloadClientScripts") { + if (selectionManager.hasSelection()) { + var timestamp = Date.now(); + for (i = 0; i < selectionManager.selections.length; i++) { + Entities.editEntity(selectionManager.selections[i], { + scriptTimestamp: timestamp + }); + } + } + } else if (data.action === "reloadServerScripts") { + if (selectionManager.hasSelection()) { + for (i = 0; i < selectionManager.selections.length; i++) { + Entities.reloadServerScripts(selectionManager.selections[i]); + } + } + } + } else if (data.type === "propertiesPageReady") { + updateSelections(true); + } else if (data.type === "tooltipsRequest") { + emitScriptEvent({ + type: 'tooltipsReply', + tooltips: Script.require('./assets/data/createAppTooltips.json'), + hmdActive: HMD.active, + }); + } else if (data.type === "propertyRangeRequest") { + var propertyRanges = {}; + data.properties.forEach(function (property) { + propertyRanges[property] = Entities.getPropertyInfo(property); + }); + emitScriptEvent({ + type: 'propertyRangeReply', + propertyRanges: propertyRanges, + }); + } else if (data.type === "materialTargetRequest") { + var parentModelData; + var properties = Entities.getEntityProperties(data.entityID, ["type", "parentID"]); + if (properties.type === "Material" && properties.parentID !== Uuid.NULL) { + var parentType = Entities.getEntityProperties(properties.parentID, ["type"]).type; + if (parentType === "Model" || Entities.getNestableType(properties.parentID) === "avatar") { + parentModelData = Graphics.getModel(properties.parentID); + } else if (parentType === "Shape" || parentType === "Box" || parentType === "Sphere") { + parentModelData = {}; + parentModelData.numMeshes = 1; + parentModelData.materialNames = []; + } + } + emitScriptEvent({ + type: 'materialTargetReply', + entityID: data.entityID, + materialTargetData: parentModelData, + }); + } else if (data.type === "zoneListRequest") { + emitScriptEvent({ + type: 'zoneListRequest', + zones: getExistingZoneList() + }); + } + }; + + HMD.displayModeChanged.connect(function() { + emitScriptEvent({ + type: 'hmdActiveChanged', + hmdActive: HMD.active, + }); + }); + + createToolsWindow.webEventReceived.addListener(this, onWebEventReceived); + + webView.webEventReceived.connect(this, onWebEventReceived); + + return that; +}; + + +var PopupMenu = function () { + var self = this; + + var MENU_ITEM_HEIGHT = 21; + var MENU_ITEM_SPACING = 1; + var TEXT_MARGIN = 7; + + var overlays = []; + var overlayInfo = {}; + + var visible = false; + + var upColor = { + red: 0, + green: 0, + blue: 0 + }; + var downColor = { + red: 192, + green: 192, + blue: 192 + }; + var overColor = { + red: 128, + green: 128, + blue: 128 + }; + + self.onSelectMenuItem = function () {}; + + self.addMenuItem = function (name) { + var id = Overlays.addOverlay("text", { + text: name, + backgroundAlpha: 1.0, + backgroundColor: upColor, + topMargin: TEXT_MARGIN, + leftMargin: TEXT_MARGIN, + width: 210, + height: MENU_ITEM_HEIGHT, + font: { + size: 12 + }, + visible: false + }); + overlays.push(id); + overlayInfo[id] = { + name: name + }; + return id; + }; + + self.updateMenuItemText = function (id, newText) { + Overlays.editOverlay(id, { + text: newText + }); + }; + + self.setPosition = function (x, y) { + for (var key in overlayInfo) { + Overlays.editOverlay(key, { + x: x, + y: y + }); + y += MENU_ITEM_HEIGHT + MENU_ITEM_SPACING; + } + }; + + self.onSelected = function () {}; + + var pressingOverlay = null; + var hoveringOverlay = null; + + self.mousePressEvent = function (event) { + if (event.isLeftButton) { + var overlay = Overlays.getOverlayAtPoint({ + x: event.x, + y: event.y + }); + if (overlay in overlayInfo) { + pressingOverlay = overlay; + Overlays.editOverlay(pressingOverlay, { + backgroundColor: downColor + }); + } else { + self.hide(); + } + return false; + } + }; + self.mouseMoveEvent = function (event) { + if (visible) { + var overlay = Overlays.getOverlayAtPoint({ + x: event.x, + y: event.y + }); + if (!pressingOverlay) { + if (hoveringOverlay !== null && overlay !== hoveringOverlay) { + Overlays.editOverlay(hoveringOverlay, { + backgroundColor: upColor + }); + hoveringOverlay = null; + } + if (overlay !== hoveringOverlay && overlay in overlayInfo) { + Overlays.editOverlay(overlay, { + backgroundColor: overColor + }); + hoveringOverlay = overlay; + } + } + } + return false; + }; + self.mouseReleaseEvent = function (event) { + var overlay = Overlays.getOverlayAtPoint({ + x: event.x, + y: event.y + }); + if (pressingOverlay !== null && pressingOverlay !== undefined) { + if (overlay === pressingOverlay) { + self.onSelectMenuItem(overlayInfo[overlay].name); + } + Overlays.editOverlay(pressingOverlay, { + backgroundColor: upColor + }); + pressingOverlay = null; + self.hide(); + } + }; + + self.setVisible = function (newVisible) { + if (newVisible !== visible) { + visible = newVisible; + for (var key in overlayInfo) { + Overlays.editOverlay(key, { + visible: newVisible + }); + } + } + }; + self.show = function () { + self.setVisible(true); + }; + self.hide = function () { + self.setVisible(false); + }; + + function cleanup() { + ContextOverlay.enabled = true; + for (var i = 0; i < overlays.length; i++) { + Overlays.deleteOverlay(overlays[i]); + } + Controller.mousePressEvent.disconnect(self.mousePressEvent); + Controller.mouseMoveEvent.disconnect(self.mouseMoveEvent); + Controller.mouseReleaseEvent.disconnect(self.mouseReleaseEvent); + + Entities.canRezChanged.disconnect(checkEditPermissionsAndUpdate); + Entities.canRezTmpChanged.disconnect(checkEditPermissionsAndUpdate); + Entities.canRezCertifiedChanged.disconnect(checkEditPermissionsAndUpdate); + Entities.canRezTmpCertifiedChanged.disconnect(checkEditPermissionsAndUpdate); + } + + Controller.mousePressEvent.connect(self.mousePressEvent); + Controller.mouseMoveEvent.connect(self.mouseMoveEvent); + Controller.mouseReleaseEvent.connect(self.mouseReleaseEvent); + Script.scriptEnding.connect(cleanup); + + return this; +}; + +function whenPressed(fn) { + return function(value) { + if (value > 0) { + fn(); + } + }; +} + +function whenReleased(fn) { + return function(value) { + if (value === 0) { + fn(); + } + }; +} + +var isOnMacPlatform = Controller.getValue(Controller.Hardware.Application.PlatformMac); + +var mapping = Controller.newMapping(CONTROLLER_MAPPING_NAME); +if (isOnMacPlatform) { + mapping.from([Controller.Hardware.Keyboard.Backspace]).to(deleteKey); +} else { + mapping.from([Controller.Hardware.Keyboard.Delete]).to(deleteKey); +} +mapping.from([Controller.Hardware.Keyboard.T]).to(toggleKey); +mapping.from([Controller.Hardware.Keyboard.F]).to(focusKey); +mapping.from([Controller.Hardware.Keyboard.G]).to(gridKey); +mapping.from([Controller.Hardware.Keyboard.X]) + .when([Controller.Hardware.Keyboard.Control]) + .to(whenReleased(function() { selectionManager.cutSelectedEntities() })); +mapping.from([Controller.Hardware.Keyboard.C]) + .when([Controller.Hardware.Keyboard.Control]) + .to(whenReleased(function() { selectionManager.copySelectedEntities() })); +mapping.from([Controller.Hardware.Keyboard.V]) + .when([Controller.Hardware.Keyboard.Control]) + .to(whenReleased(function() { selectionManager.pasteEntities() })); +mapping.from([Controller.Hardware.Keyboard.D]) + .when([Controller.Hardware.Keyboard.Control]) + .to(whenReleased(function() { selectionManager.duplicateSelection() })); + +// Bind undo to ctrl-shift-z to maintain backwards-compatibility +mapping.from([Controller.Hardware.Keyboard.Z]) + .when([Controller.Hardware.Keyboard.Control, Controller.Hardware.Keyboard.Shift]) + .to(whenPressed(function() { undoHistory.redo() })); + + +mapping.from([Controller.Hardware.Keyboard.P]) + .when([Controller.Hardware.Keyboard.Control, Controller.Hardware.Keyboard.Shift]) + .to(whenReleased(function() { unparentSelectedEntities(); })); + +mapping.from([Controller.Hardware.Keyboard.P]) + .when([Controller.Hardware.Keyboard.Control, !Controller.Hardware.Keyboard.Shift]) + .to(whenReleased(function() { parentSelectedEntities(); })); + +keyUpEventFromUIWindow = function(keyUpEvent) { + var WANT_DEBUG_MISSING_SHORTCUTS = false; + + var pressedValue = 0.0; + + if ((!isOnMacPlatform && keyUpEvent.keyCodeString === "Delete") + || (isOnMacPlatform && keyUpEvent.keyCodeString === "Backspace")) { + + deleteKey(pressedValue); + } else if (keyUpEvent.keyCodeString === "T") { + toggleKey(pressedValue); + } else if (keyUpEvent.keyCodeString === "F") { + focusKey(pressedValue); + } else if (keyUpEvent.keyCodeString === "G") { + gridKey(pressedValue); + } else if (keyUpEvent.controlKey && keyUpEvent.keyCodeString === "X") { + selectionManager.cutSelectedEntities(); + } else if (keyUpEvent.controlKey && keyUpEvent.keyCodeString === "C") { + selectionManager.copySelectedEntities(); + } else if (keyUpEvent.controlKey && keyUpEvent.keyCodeString === "V") { + selectionManager.pasteEntities(); + } else if (keyUpEvent.controlKey && keyUpEvent.keyCodeString === "D") { + selectionManager.duplicateSelection(); + } else if (!isOnMacPlatform && keyUpEvent.controlKey && !keyUpEvent.shiftKey && keyUpEvent.keyCodeString === "Z") { + undoHistory.undo(); // undo is only handled via handleMenuItem on Mac + } else if (keyUpEvent.controlKey && !keyUpEvent.shiftKey && keyUpEvent.keyCodeString === "P") { + parentSelectedEntities(); + } else if (keyUpEvent.controlKey && keyUpEvent.shiftKey && keyUpEvent.keyCodeString === "P") { + unparentSelectedEntities(); + } else if (!isOnMacPlatform && + ((keyUpEvent.controlKey && keyUpEvent.shiftKey && keyUpEvent.keyCodeString === "Z") || + (keyUpEvent.controlKey && keyUpEvent.keyCodeString === "Y"))) { + undoHistory.redo(); // redo is only handled via handleMenuItem on Mac + } else if (WANT_DEBUG_MISSING_SHORTCUTS) { + console.warn("unhandled key event: " + JSON.stringify(keyUpEvent)) + } +}; + +var propertyMenu = new PopupMenu(); + +propertyMenu.onSelectMenuItem = function (name) { + + if (propertyMenu.marketplaceID) { + showMarketplace(propertyMenu.marketplaceID); + } +}; + +var showMenuItem = propertyMenu.addMenuItem("Show in Marketplace"); + +var propertiesTool = new PropertiesTool(); + +selectionDisplay.onSpaceModeChange = function(spaceMode) { + entityListTool.setSpaceMode(spaceMode); + propertiesTool.setSpaceMode(spaceMode); +}; + +function getExistingZoneList() { + var center = {"x": 0, "y": 0, "z": 0}; + var existingZoneIDs = Entities.findEntitiesByType("Zone", center, 17000); + var listExistingZones = []; + var thisZone = {}; + var properties; + for (var k = 0; k < existingZoneIDs.length; k++) { + properties = Entities.getEntityProperties(existingZoneIDs[k], ["name"]); + thisZone = { + "id": existingZoneIDs[k], + "name": properties.name + }; + listExistingZones.push(thisZone); + } + return listExistingZones; +} + +}()); // END LOCAL_SCOPE From d575616a6d2bb2a906d2ea5c6f484d1d853fb45f Mon Sep 17 00:00:00 2001 From: Alezia Kurdis <60075796+AleziaKurdis@users.noreply.github.com> Date: Sat, 9 May 2020 15:08:38 -0400 Subject: [PATCH 087/160] Code Adjustments. Constant used for ENTIRE_DOMAIN_SCAN_RADIUS instead of 17000 Missing spaces, and line too long being adjusted. --- scripts/system/create/edit.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/scripts/system/create/edit.js b/scripts/system/create/edit.js index 55461c33a0..166b6efc88 100644 --- a/scripts/system/create/edit.js +++ b/scripts/system/create/edit.js @@ -42,6 +42,7 @@ var CreateWindow = Script.require('./modules/createWindow.js'); var TITLE_OFFSET = 60; var CREATE_TOOLS_WIDTH = 490; var MAX_DEFAULT_ENTITY_LIST_HEIGHT = 942; +var ENTIRE_DOMAIN_SCAN_RADIUS = 22628; var DEFAULT_IMAGE = "https://hifi-content.s3.amazonaws.com/DomainContent/production/no-image.jpg"; @@ -563,7 +564,8 @@ var toolBar = (function () { if (!properties.grab) { properties.grab = {}; if (Menu.isOptionChecked(MENU_CREATE_ENTITIES_GRABBABLE) && - !(properties.type === "Zone" || properties.type === "Light" || properties.type === "ParticleEffect" || properties.type === "Web")) { + !(properties.type === "Zone" || properties.type === "Light" + || properties.type === "ParticleEffect" || properties.type === "Web")) { properties.grab.grabbable = true; } else { properties.grab.grabbable = false; @@ -2890,8 +2892,8 @@ selectionDisplay.onSpaceModeChange = function(spaceMode) { }; function getExistingZoneList() { - var center = {"x": 0, "y": 0, "z": 0}; - var existingZoneIDs = Entities.findEntitiesByType("Zone", center, 17000); + var center = { "x": 0, "y": 0, "z": 0 }; + var existingZoneIDs = Entities.findEntitiesByType("Zone", center, ENTIRE_DOMAIN_SCAN_RADIUS); var listExistingZones = []; var thisZone = {}; var properties; From 5d00341662d1f21f1cfba8270e6f220d90ec47d0 Mon Sep 17 00:00:00 2001 From: Alezia Kurdis <60075796+AleziaKurdis@users.noreply.github.com> Date: Sat, 9 May 2020 15:24:18 -0400 Subject: [PATCH 088/160] Correct value to ENTIRE_DOMAIN_SCAN_RADIUS Set the correct value to constant: ENTIRE_DOMAIN_SCAN_RADIUS var ENTIRE_DOMAIN_SCAN_RADIUS = 27713; to reach all the entities of a domain from the center,(including in the corners) the radius must be: sqr((16000 ^2) + (16000) ^2 + (16000 ^2)) which is once rounded = to 27713. --- scripts/system/create/edit.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/system/create/edit.js b/scripts/system/create/edit.js index 166b6efc88..564ce512aa 100644 --- a/scripts/system/create/edit.js +++ b/scripts/system/create/edit.js @@ -42,7 +42,7 @@ var CreateWindow = Script.require('./modules/createWindow.js'); var TITLE_OFFSET = 60; var CREATE_TOOLS_WIDTH = 490; var MAX_DEFAULT_ENTITY_LIST_HEIGHT = 942; -var ENTIRE_DOMAIN_SCAN_RADIUS = 22628; +var ENTIRE_DOMAIN_SCAN_RADIUS = 27713; var DEFAULT_IMAGE = "https://hifi-content.s3.amazonaws.com/DomainContent/production/no-image.jpg"; From 95570d5abc7c8ce150842f959412cad211713a13 Mon Sep 17 00:00:00 2001 From: Dale Glass Date: Sun, 10 May 2020 18:39:13 +0200 Subject: [PATCH 089/160] Kill the entity in processRemovedEntities before calling prepareEntityForDelete This was removed back in 9d92546a and causes an assertion (#337) --- libraries/entities/src/EntityTree.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/libraries/entities/src/EntityTree.cpp b/libraries/entities/src/EntityTree.cpp index 11cd6309da..1c1b3a41f5 100644 --- a/libraries/entities/src/EntityTree.cpp +++ b/libraries/entities/src/EntityTree.cpp @@ -784,6 +784,7 @@ void EntityTree::processRemovedEntities(const DeleteEntityOperator& theOperator) } } if (theEntity->isSimulated()) { + theEntity->die(); _simulation->prepareEntityForDelete(theEntity); } } From 95a64b2f2cb1ef66c3a39f8140efeefe680b4977 Mon Sep 17 00:00:00 2001 From: motofckr9k Date: Tue, 12 May 2020 03:45:55 +0200 Subject: [PATCH 090/160] Change standard log file names from "hifi-.." to "vircadia-.." --- libraries/shared/src/shared/FileLogger.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libraries/shared/src/shared/FileLogger.cpp b/libraries/shared/src/shared/FileLogger.cpp index 2ccc247af3..9fc72bd000 100644 --- a/libraries/shared/src/shared/FileLogger.cpp +++ b/libraries/shared/src/shared/FileLogger.cpp @@ -38,12 +38,12 @@ private: QMutex _fileMutex; }; -static const QString FILENAME_FORMAT = "hifi-log_%1%2.txt"; +static const QString FILENAME_FORMAT = "vircadia-log_%1%2.txt"; static const QString DATETIME_FORMAT = "yyyy-MM-dd_hh.mm.ss"; static const QString LOGS_DIRECTORY = "Logs"; static const QString DATETIME_WILDCARD = "20[0-9][0-9]-[01][0-9]-[0-3][0-9]_[0-2][0-9]\\.[0-6][0-9]\\.[0-6][0-9]"; static const QString SESSION_WILDCARD = "[0-9a-z]{8}(-[0-9a-z]{4}){3}-[0-9a-z]{12}"; -static QRegExp LOG_FILENAME_REGEX { "hifi-log_" + DATETIME_WILDCARD + "(_" + SESSION_WILDCARD + ")?\\.txt" }; +static QRegExp LOG_FILENAME_REGEX { "vircadia-log_" + DATETIME_WILDCARD + "(_" + SESSION_WILDCARD + ")?\\.txt" }; static QUuid SESSION_ID; // Max log size is 512 KB. We send log files to our crash reporter, so we want to keep this relatively @@ -68,7 +68,7 @@ QString getLogRollerFilename() { } const QString& getLogFilename() { - static QString fileName = FileUtils::standardPath(LOGS_DIRECTORY) + "hifi-log.txt"; + static QString fileName = FileUtils::standardPath(LOGS_DIRECTORY) + "vircadia-log.txt"; return fileName; } From dd9728a09fbd44cc155bb91a811631a41d89003a Mon Sep 17 00:00:00 2001 From: MotoFufu9k Date: Wed, 13 May 2020 23:06:36 +0200 Subject: [PATCH 091/160] Change standard grabbable setting to false --- scripts/system/create/edit.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/system/create/edit.js b/scripts/system/create/edit.js index 564ce512aa..969b03e795 100644 --- a/scripts/system/create/edit.js +++ b/scripts/system/create/edit.js @@ -1409,7 +1409,7 @@ function setupModelMenus() { menuItemName: MENU_CREATE_ENTITIES_GRABBABLE, afterItem: "Unparent Entity", isCheckable: true, - isChecked: Settings.getValue(SETTING_EDIT_PREFIX + MENU_CREATE_ENTITIES_GRABBABLE, true) + isChecked: Settings.getValue(SETTING_EDIT_PREFIX + MENU_CREATE_ENTITIES_GRABBABLE, false) }); Menu.addMenuItem({ From f4bcc82dd6adf50a69618af8494445889e409168 Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Sat, 16 May 2020 02:27:45 -0400 Subject: [PATCH 092/160] Corrections. --- README_hifi.md | 4 +++- interface/resources/qml/hifi/dialogs/TabletAboutDialog.qml | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/README_hifi.md b/README_hifi.md index 8d02300455..004b43b706 100644 --- a/README_hifi.md +++ b/README_hifi.md @@ -1,3 +1,5 @@ +# THIS IS AN OUTDATED DOCUMENT. + High Fidelity (hifi) is an early-stage technology lab experimenting with Virtual Worlds and VR. This repository contains the source to many of the components in our @@ -15,7 +17,7 @@ Come chat with us in [our Gitter](https://gitter.im/highfidelity/hifi) if you ha Documentation ========= -Documentation is available at [docs.vircadia.dev](https://docs.vircadia.dev), if something is missing, please suggest it via a new job on Worklist (add to the hifi-docs project). +Documentation is available at [docs.highfidelity.com](https://docs.highfidelity.com/), if something is missing, please suggest it via a new job on Worklist (add to the hifi-docs project). There is also detailed [documentation on our coding standards](CODING_STANDARD.md). diff --git a/interface/resources/qml/hifi/dialogs/TabletAboutDialog.qml b/interface/resources/qml/hifi/dialogs/TabletAboutDialog.qml index c7c82b7e07..e4ad375319 100644 --- a/interface/resources/qml/hifi/dialogs/TabletAboutDialog.qml +++ b/interface/resources/qml/hifi/dialogs/TabletAboutDialog.qml @@ -116,7 +116,7 @@ Rectangle { Item { height: 20; width: 1 } RalewayRegular { color: "white" - text: "© 2020 Vircadia Contributors." + text: "© 2020 Vircadia." size: 14 } RalewayRegular { From 8b410c662efe9ae0d5cefb989f1e8a61155f8745 Mon Sep 17 00:00:00 2001 From: kasenvr <52365539+kasenvr@users.noreply.github.com> Date: Sat, 16 May 2020 16:35:16 -0400 Subject: [PATCH 093/160] Removed unused variable. --- interface/src/Application.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 4657affb67..1c3eeb5909 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -3186,18 +3186,14 @@ void Application::initializeUi() { safeURLS += settingsSafeURLS; // END PULL SAFEURLS FROM INTERFACE.JSON Settings - - bool isInWhitelist = false; // assume unsafe if (AUTHORIZED_EXTERNAL_QML_SOURCE.isParentOf(url)) { - isInWhitelist = true; return true; } else { for (const auto& str : safeURLS) { if (!str.isEmpty() && str.endsWith(".qml") && url.toString().endsWith(".qml") && url.toString().startsWith(str)) { qCDebug(interfaceapp) << "Found matching url!" << url.host(); - isInWhitelist = true; return true; } } From 407b2a4f2283d73590e113ca906ea0e5baa6b69a Mon Sep 17 00:00:00 2001 From: Dale Glass Date: Wed, 13 May 2020 21:05:22 +0200 Subject: [PATCH 094/160] Remove all uses of QString::null It's deprecated and produces a warning on Qt 5.14 --- launchers/qt/src/BuildsRequest.h | 4 ++-- launchers/qt/src/LauncherState.cpp | 2 +- launchers/qt/src/LauncherState.h | 2 +- launchers/qt/src/UserSettingsRequest.h | 2 +- libraries/shared/src/PathUtils.h | 2 +- tools/oven/src/BakerCLI.h | 2 +- tools/oven/src/OvenCLIApplication.cpp | 2 +- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/launchers/qt/src/BuildsRequest.h b/launchers/qt/src/BuildsRequest.h index 865d375d2a..cb33182cdb 100644 --- a/launchers/qt/src/BuildsRequest.h +++ b/launchers/qt/src/BuildsRequest.h @@ -4,10 +4,10 @@ #include struct Build { - QString tag{ QString::null }; + QString tag; int latestVersion{ 0 }; int buildNumber{ 0 }; - QString installerZipURL{ QString::null }; + QString installerZipURL; }; struct Builds { diff --git a/launchers/qt/src/LauncherState.cpp b/launchers/qt/src/LauncherState.cpp index 300bd37ef8..03e91ae58f 100644 --- a/launchers/qt/src/LauncherState.cpp +++ b/launchers/qt/src/LauncherState.cpp @@ -244,7 +244,7 @@ void LauncherState::getCurrentClientVersion() { if (match.hasMatch()) { _currentClientVersion = match.captured("version"); } else { - _currentClientVersion = QString::null; + _currentClientVersion.clear(); } qDebug() << "Current client version is: " << _currentClientVersion; diff --git a/launchers/qt/src/LauncherState.h b/launchers/qt/src/LauncherState.h index 39c4141b81..c0eb44cb08 100644 --- a/launchers/qt/src/LauncherState.h +++ b/launchers/qt/src/LauncherState.h @@ -176,7 +176,7 @@ private: QString _displayName; QString _applicationErrorMessage; QString _currentClientVersion; - QString _buildTag { QString::null }; + QString _buildTag; QString _contentCacheURL; QString _loginTokenResponse; QFile _clientZipFile; diff --git a/launchers/qt/src/UserSettingsRequest.h b/launchers/qt/src/UserSettingsRequest.h index 5827364377..a42a70df37 100644 --- a/launchers/qt/src/UserSettingsRequest.h +++ b/launchers/qt/src/UserSettingsRequest.h @@ -6,7 +6,7 @@ #include "LoginRequest.h" struct UserSettings { - QString homeLocation{ QString::null }; + QString homeLocation; }; class UserSettingsRequest : public QObject { diff --git a/libraries/shared/src/PathUtils.h b/libraries/shared/src/PathUtils.h index 4ab6a79e22..142cd7bfbc 100644 --- a/libraries/shared/src/PathUtils.h +++ b/libraries/shared/src/PathUtils.h @@ -58,7 +58,7 @@ public: static QString generateTemporaryDir(); static bool deleteMyTemporaryDir(QString dirName); - static int removeTemporaryApplicationDirs(QString appName = QString::null); + static int removeTemporaryApplicationDirs(QString appName = QString()); static Qt::CaseSensitivity getFSCaseSensitivity(); static QString stripFilename(const QUrl& url); diff --git a/tools/oven/src/BakerCLI.h b/tools/oven/src/BakerCLI.h index bf33b625dd..d9b29cf6bd 100644 --- a/tools/oven/src/BakerCLI.h +++ b/tools/oven/src/BakerCLI.h @@ -34,7 +34,7 @@ public: BakerCLI(OvenCLIApplication* parent); public slots: - void bakeFile(QUrl inputUrl, const QString& outputPath, const QString& type = QString::null); + void bakeFile(QUrl inputUrl, const QString& outputPath, const QString& type = QString()); private slots: void handleFinishedBaker(); diff --git a/tools/oven/src/OvenCLIApplication.cpp b/tools/oven/src/OvenCLIApplication.cpp index 5b0de4d6fa..6d3a8912ab 100644 --- a/tools/oven/src/OvenCLIApplication.cpp +++ b/tools/oven/src/OvenCLIApplication.cpp @@ -85,7 +85,7 @@ void OvenCLIApplication::parseCommandLine(int argc, char* argv[]) { _inputUrlParameter = QDir::fromNativeSeparators(parser.value(CLI_INPUT_PARAMETER)); _outputUrlParameter = QDir::fromNativeSeparators(parser.value(CLI_OUTPUT_PARAMETER)); - _typeParameter = parser.isSet(CLI_TYPE_PARAMETER) ? parser.value(CLI_TYPE_PARAMETER) : QString::null; + _typeParameter = parser.isSet(CLI_TYPE_PARAMETER) ? parser.value(CLI_TYPE_PARAMETER) : QString(); if (parser.isSet(CLI_DISABLE_TEXTURE_COMPRESSION_PARAMETER)) { qDebug() << "Disabling texture compression"; From 445ebbd861ae681f66387f2145ad4e29ea114a04 Mon Sep 17 00:00:00 2001 From: Marcus Llewellyn Date: Sun, 17 May 2020 14:10:07 -0500 Subject: [PATCH 095/160] Replace KasenVR icons with Vircadia icons. --- interface/icon/interface-beta.icns | Bin 72980 -> 61280 bytes interface/icon/interface-beta.ico | Bin 287934 -> 28446 bytes interface/icon/interface.icns | Bin 72980 -> 180346 bytes interface/icon/interface.ico | Bin 287934 -> 37668 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/interface/icon/interface-beta.icns b/interface/icon/interface-beta.icns index 1fe162f88eb5f4b4bfbdbbabfc3910ec9a3adb40..39d2316046f550bd315c8f4f02e619690b3f7488 100644 GIT binary patch literal 61280 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

AWw2v2lDE;Yqj3i=$Q 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 Vs6*`iC&vA!je7Kl6l+?k|Jm<+S&RSx diff --git a/interface/icon/interface-beta.ico b/interface/icon/interface-beta.ico index 63a3eff482314acccdd23559aeed281d089f434d..5c279fd5c1e8689e111d25a35714c0f47305d146 100644 GIT binary patch literal 28446 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 aNi{HL3^y5Bx)r`-yIXU=##43EoBt28H>;Nb literal 287934 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≷AR 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 F{{f|OXlVcd literal 72980 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

AWw2v2lDE;Yqj3i=$Q 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 Vs6*`iC&vA!je7Kl6l+?k|Jm<+S&RSx diff --git a/interface/icon/interface.ico b/interface/icon/interface.ico index 63a3eff482314acccdd23559aeed281d089f434d..d0d5c4ac966f5b2940bf9289adfc87c4f5058981 100644 GIT binary patch literal 37668 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 Date: Sun, 17 May 2020 14:13:38 -0500 Subject: [PATCH 096/160] Update CMakeLists.txt Change Visual Studio solution name to `vircadia` --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ecbfd2eed9..1637a1b180 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -97,7 +97,7 @@ endif() option(VCPKG_APPLOCAL_DEPS OFF) -project(athena) +project(vircadia) include("cmake/init.cmake") include("cmake/compiler.cmake") option(VCPKG_APPLOCAL_DEPS OFF) From 187a2749c348aa7b3bbae097d0a7d3113c26d6e7 Mon Sep 17 00:00:00 2001 From: Marcus Llewellyn Date: Sun, 17 May 2020 14:26:45 -0500 Subject: [PATCH 097/160] Rebrand the About dialog to Vircadia. Also removes trailing whitespace from Menu.cpp. --- interface/resources/images/about-vircadia.png | Bin 0 -> 7767 bytes .../qml/hifi/dialogs/TabletAboutDialog.qml | 2 +- interface/src/Menu.cpp | 42 +++++++++--------- 3 files changed, 22 insertions(+), 22 deletions(-) create mode 100644 interface/resources/images/about-vircadia.png diff --git a/interface/resources/images/about-vircadia.png b/interface/resources/images/about-vircadia.png new file mode 100644 index 0000000000000000000000000000000000000000..14ae73b226cd8965706d77ec25aaba4e9bbaf3b5 GIT binary patch literal 7767 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 PG*U)V;aj!1VZi?Y*sDCR literal 0 HcmV?d00001 diff --git a/interface/resources/qml/hifi/dialogs/TabletAboutDialog.qml b/interface/resources/qml/hifi/dialogs/TabletAboutDialog.qml index 2be66442ce..e65bfa5ebb 100644 --- a/interface/resources/qml/hifi/dialogs/TabletAboutDialog.qml +++ b/interface/resources/qml/hifi/dialogs/TabletAboutDialog.qml @@ -25,7 +25,7 @@ Rectangle { Image { sourceSize.width: 295 sourceSize.height: 75 - source: "../../../images/about-projectathena.png" + source: "../../../images/about-vircadia.png" } Item { height: 30; width: 1 } Column { diff --git a/interface/src/Menu.cpp b/interface/src/Menu.cpp index b5cacd662b..bc095b3beb 100644 --- a/interface/src/Menu.cpp +++ b/interface/src/Menu.cpp @@ -223,9 +223,9 @@ Menu::Menu() { MenuWrapper* startupLocationMenu = navigateMenu->addMenu(MenuOption::StartUpLocation); QActionGroup* startupLocatiopnGroup = new QActionGroup(startupLocationMenu); startupLocatiopnGroup->setExclusive(true); - startupLocatiopnGroup->addAction(addCheckableActionToQMenuAndActionHash(startupLocationMenu, MenuOption::HomeLocation, 0, + startupLocatiopnGroup->addAction(addCheckableActionToQMenuAndActionHash(startupLocationMenu, MenuOption::HomeLocation, 0, false)); - startupLocatiopnGroup->addAction(addCheckableActionToQMenuAndActionHash(startupLocationMenu, MenuOption::LastLocation, 0, + startupLocatiopnGroup->addAction(addCheckableActionToQMenuAndActionHash(startupLocationMenu, MenuOption::LastLocation, 0, true)); // Settings menu ---------------------------------- @@ -288,13 +288,13 @@ Menu::Menu() { hmd->toggleShouldShowTablet(); } }); - + // Settings > Entity Script / QML Whitelist action = addActionToQMenuAndActionHash(settingsMenu, "Entity Script / QML Whitelist"); connect(action, &QAction::triggered, [] { auto tablet = DependencyManager::get()->getTablet("com.highfidelity.interface.tablet.system"); auto hmd = DependencyManager::get(); - + tablet->pushOntoStack("hifi/dialogs/security/EntityScriptQMLWhitelist.qml"); if (!hmd->getShouldShowTablet()) { @@ -310,10 +310,10 @@ Menu::Menu() { // Developer menu ---------------------------------- MenuWrapper* developerMenu = addMenu("Developer", "Developer"); - + // Developer > Scripting >>> MenuWrapper* scriptingOptionsMenu = developerMenu->addMenu("Scripting"); - + // Developer > Scripting > Console... addActionToQMenuAndActionHash(scriptingOptionsMenu, MenuOption::Console, Qt::CTRL | Qt::ALT | Qt::Key_J, DependencyManager::get().data(), @@ -328,7 +328,7 @@ Menu::Menu() { defaultScriptsLoc.setPath(defaultScriptsLoc.path() + "developer/utilities/tools/currentAPI.js"); DependencyManager::get()->loadScript(defaultScriptsLoc.toString()); }); - + // Developer > Scripting > Entity Script Server Log auto essLogAction = addActionToQMenuAndActionHash(scriptingOptionsMenu, MenuOption::EntityScriptServerLog, 0, qApp, SLOT(toggleEntityScriptServerLogDialog())); @@ -348,7 +348,7 @@ Menu::Menu() { // Developer > Scripting > Verbose Logging addCheckableActionToQMenuAndActionHash(scriptingOptionsMenu, MenuOption::VerboseLogging, 0, false, qApp, SLOT(updateVerboseLogging())); - + // Developer > Scripting > Enable Speech Control API #if defined(Q_OS_MAC) || defined(Q_OS_WIN) auto speechRecognizer = DependencyManager::get(); @@ -360,20 +360,20 @@ Menu::Menu() { UNSPECIFIED_POSITION); connect(speechRecognizer.data(), SIGNAL(enabledUpdated(bool)), speechRecognizerAction, SLOT(setChecked(bool))); #endif - + // Developer > UI >>> MenuWrapper* uiOptionsMenu = developerMenu->addMenu("UI"); action = addCheckableActionToQMenuAndActionHash(uiOptionsMenu, MenuOption::DesktopTabletToToolbar, 0, qApp->getDesktopTabletBecomesToolbarSetting()); - + // Developer > UI > Show Overlays addCheckableActionToQMenuAndActionHash(uiOptionsMenu, MenuOption::Overlays, 0, true); - + // Developer > UI > Desktop Tablet Becomes Toolbar connect(action, &QAction::triggered, [action] { qApp->setDesktopTabletBecomesToolbarSetting(action->isChecked()); }); - + // Developer > UI > HMD Tablet Becomes Toolbar action = addCheckableActionToQMenuAndActionHash(uiOptionsMenu, MenuOption::HMDTabletToToolbar, 0, qApp->getHmdTabletBecomesToolbarSetting()); @@ -702,7 +702,7 @@ Menu::Menu() { result = QProcessEnvironment::systemEnvironment().contains(HIFI_SHOW_DEVELOPER_CRASH_MENU); if (result) { MenuWrapper* crashMenu = developerMenu->addMenu("Crash"); - + // Developer > Crash > Display Crash Options addCheckableActionToQMenuAndActionHash(crashMenu, MenuOption::DisplayCrashOptions, 0, true); @@ -741,7 +741,7 @@ Menu::Menu() { addActionToQMenuAndActionHash(crashMenu, MenuOption::CrashOnShutdown, 0, qApp, SLOT(crashOnShutdown())); } - + // Developer > Show Statistics addCheckableActionToQMenuAndActionHash(developerMenu, MenuOption::Stats, 0, true); @@ -782,21 +782,21 @@ Menu::Menu() { // Help/Application menu ---------------------------------- MenuWrapper * helpMenu = addMenu("Help"); - // Help > About Project Athena - action = addActionToQMenuAndActionHash(helpMenu, "About Project Athena"); + // Help > About Vircadiaa + action = addActionToQMenuAndActionHash(helpMenu, "About Vircadia"); connect(action, &QAction::triggered, [] { qApp->showDialog(QString("hifi/dialogs/AboutDialog.qml"), QString("hifi/dialogs/TabletAboutDialog.qml"), "AboutDialog"); }); helpMenu->addSeparator(); - // Help > Athena Docs + // Help > Vircadia Docs action = addActionToQMenuAndActionHash(helpMenu, "Online Documentation"); connect(action, &QAction::triggered, qApp, [] { - QDesktopServices::openUrl(QUrl("https://docs.projectathena.dev/")); + QDesktopServices::openUrl(QUrl("https://apidocs.vircadia.dev/")); }); - // Help > Athena Forum + // Help > Vircadia Forum /* action = addActionToQMenuAndActionHash(helpMenu, "Online Forums"); connect(action, &QAction::triggered, qApp, [] { QDesktopServices::openUrl(QUrl("https://forums.highfidelity.com/")); @@ -805,7 +805,7 @@ Menu::Menu() { // Help > Scripting Reference action = addActionToQMenuAndActionHash(helpMenu, "Online Script Reference"); connect(action, &QAction::triggered, qApp, [] { - QDesktopServices::openUrl(QUrl("https://apidocs.projectathena.dev/")); + QDesktopServices::openUrl(QUrl("https://apidocs.vircadia.dev/")); }); addActionToQMenuAndActionHash(helpMenu, "Controls Reference", 0, qApp, SLOT(showHelp())); @@ -815,7 +815,7 @@ Menu::Menu() { // Help > Release Notes action = addActionToQMenuAndActionHash(helpMenu, "Release Notes"); connect(action, &QAction::triggered, qApp, [] { - QDesktopServices::openUrl(QUrl("https://docs.projectathena.dev/release-notes.html")); + QDesktopServices::openUrl(QUrl("https://docs.vircadia.dev/release-notes.html")); }); // Help > Report a Bug! From ce4aa675062cab08f7d4187c106b16b1e053653c Mon Sep 17 00:00:00 2001 From: Marcus Llewellyn Date: Sun, 17 May 2020 14:30:36 -0500 Subject: [PATCH 098/160] Change Window Titles to Vircadia Also strips trailing whitespaces from interface's Applicaction.cpp. --- interface/src/Application.cpp | 36 +++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 1b22dbd329..e68e3a2de1 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -656,8 +656,8 @@ private: /**jsdoc *

The Controller.Hardware.Application object has properties representing Interface's state. The property * values are integer IDs, uniquely identifying each output. Read-only.

- *

These states can be mapped to actions or functions or Controller.Standard items in a {@link RouteObject} - * mapping (e.g., using the {@link RouteObject#when} method). Each data value is either 1.0 for "true" or + *

These states can be mapped to actions or functions or Controller.Standard items in a {@link RouteObject} + * mapping (e.g., using the {@link RouteObject#when} method). Each data value is either 1.0 for "true" or * 0.0 for "false".

* * @@ -679,7 +679,7 @@ private: * * * - * * * @@ -829,7 +829,7 @@ bool setupEssentials(int& argc, char** argv, bool runningMarkerExisted) { audioDLLPath += "/audioWin7"; } QCoreApplication::addLibraryPath(audioDLLPath); -#endif +#endif QString defaultScriptsOverrideOption = getCmdOption(argc, constArgv, "--defaultScriptsOverride"); @@ -949,7 +949,7 @@ bool setupEssentials(int& argc, char** argv, bool runningMarkerExisted) { DependencyManager::set(); DependencyManager::set(); PlatformHelper::setup(); - + QObject::connect(PlatformHelper::instance(), &PlatformHelper::systemWillWake, [] { QMetaObject::invokeMethod(DependencyManager::get().data(), "noteAwakening", Qt::QueuedConnection); QMetaObject::invokeMethod(DependencyManager::get().data(), "noteAwakening", Qt::QueuedConnection); @@ -1139,7 +1139,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo QFontDatabase::addApplicationFont(PathUtils::resourcesPath() + "fonts/Graphik-SemiBold.ttf"); QFontDatabase::addApplicationFont(PathUtils::resourcesPath() + "fonts/Graphik-Regular.ttf"); QFontDatabase::addApplicationFont(PathUtils::resourcesPath() + "fonts/Graphik-Medium.ttf"); - _window->setWindowTitle("Project Athena"); + _window->setWindowTitle("Vircadia Interface"); Model::setAbstractViewStateInterface(this); // The model class will sometimes need to know view state details from us @@ -1162,7 +1162,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo deadlockWatchdogThread->setMainThreadID(QThread::currentThreadId()); deadlockWatchdogThread->start(); - // Pause the deadlock watchdog when we sleep, or it might + // Pause the deadlock watchdog when we sleep, or it might // trigger a false positive when we wake back up auto platformHelper = PlatformHelper::instance(); @@ -3166,7 +3166,7 @@ void Application::showLoginScreen() { QJsonObject loginData = {}; loginData["action"] = "login dialog popped up"; UserActivityLogger::getInstance().logAction("encourageLoginDialog", loginData); - _window->setWindowTitle("Project Athena"); + _window->setWindowTitle("Vircadia Interface"); } else { resumeAfterLoginDialogActionTaken(); } @@ -3789,8 +3789,8 @@ void Application::setPreferredCursor(const QString& cursorName) { if (_displayPlugin && _displayPlugin->isHmd()) { _preferredCursor.set(cursorName.isEmpty() ? DEFAULT_CURSOR_NAME : cursorName); } - else { - _preferredCursor.set(cursorName.isEmpty() ? Cursor::Manager::getIconName(Cursor::Icon::SYSTEM) : cursorName); + else { + _preferredCursor.set(cursorName.isEmpty() ? Cursor::Manager::getIconName(Cursor::Icon::SYSTEM) : cursorName); } showCursor(Cursor::Manager::lookupIcon(_preferredCursor.get())); @@ -3977,7 +3977,7 @@ void Application::handleSandboxStatus(QNetworkReply* reply) { DependencyManager::get()->loadSettings(addressLookupString); sentTo = SENT_TO_PREVIOUS_LOCATION; } - + UserActivityLogger::getInstance().logAction("startup_sent_to", { { "sent_to", sentTo }, { "sandbox_is_running", sandboxIsRunning }, @@ -4212,7 +4212,7 @@ bool Application::event(QEvent* event) { idle(); #ifdef DEBUG_EVENT_QUEUE_DEPTH - // The event queue may very well grow beyond 400, so + // The event queue may very well grow beyond 400, so // this code should only be enabled on local builds { int count = ::hifi::qt::getEventQueueSize(QThread::currentThread()); @@ -4251,7 +4251,7 @@ bool Application::event(QEvent* event) { { //testing to see if we can set focus when focus is not set to root window. _glWidget->activateWindow(); _glWidget->setFocus(); - return true; + return true; } case QEvent::TouchBegin: @@ -5236,7 +5236,7 @@ void Application::idle() { } } #endif - + checkChangeCursor(); #if !defined(DISABLE_QML) @@ -5489,7 +5489,7 @@ void Application::loadSettings() { RenderScriptingInterface::getInstance()->loadSettings(); // Setup the PerformanceManager which will enforce the several settings to match the Preset - // On the first run, the Preset is evaluated from the + // On the first run, the Preset is evaluated from the getPerformanceManager().setupPerformancePresetSettings(_firstRun.get()); // finish initializing the camera, based on everything we checked above. Third person camera will be used if no settings @@ -5535,7 +5535,7 @@ bool Application::importEntities(const QString& urlOrFilename, const bool isObse _entityClipboard->withWriteLock([&] { _entityClipboard->eraseAllOctreeElements(); - // FIXME: readFromURL() can take over the main event loop which may cause problems, especially if downloading the JSON + // FIXME: readFromURL() can take over the main event loop which may cause problems, especially if downloading the JSON // from the Web. success = _entityClipboard->readFromURL(urlOrFilename, isObservable, callerId); if (success) { @@ -7063,7 +7063,7 @@ void Application::updateWindowTitle() const { auto accountManager = DependencyManager::get(); auto isInErrorState = nodeList->getDomainHandler().isInErrorState(); - QString buildVersion = " - Project Athena v0.86.0 K2 - " + QString buildVersion = " - Vircadia Interface - " + (BuildInfo::BUILD_TYPE == BuildInfo::BuildType::Stable ? QString("Version") : QString("Build")) + " " + applicationVersion(); @@ -8735,7 +8735,7 @@ bool Application::isThrottleRendering() const { bool Application::hasFocus() const { bool result = (QApplication::activeWindow() != nullptr); - + #if defined(Q_OS_WIN) // On Windows, QWidget::activateWindow() - as called in setFocus() - makes the application's taskbar icon flash but doesn't // take user focus away from their current window. So also check whether the application is the user's current foreground From 383bb11a40520d98b292b0ff31f7d80cfcec31f5 Mon Sep 17 00:00:00 2001 From: Marcus Llewellyn Date: Sun, 17 May 2020 14:43:09 -0500 Subject: [PATCH 099/160] Change default web entity URL to vircadia.com. --- scripts/system/create/edit.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/system/create/edit.js b/scripts/system/create/edit.js index 969b03e795..b728c8348f 100644 --- a/scripts/system/create/edit.js +++ b/scripts/system/create/edit.js @@ -430,7 +430,7 @@ const DEFAULT_ENTITY_PROPERTIES = { y: 0.9, z: 0.01 }, - sourceUrl: "https://projectathena.io/", + sourceUrl: "https://vircadia.com/", dpi: 30, }, ParticleEffect: { From 0228c35d79b58be69a9079d9fc67517d047780f1 Mon Sep 17 00:00:00 2001 From: Marcus Llewellyn Date: Sun, 17 May 2020 14:46:33 -0500 Subject: [PATCH 100/160] Update JSDOC in EntityItemPropeties.cpp to `vircadia.com` Also strips trailing whitespaces from EntityItemProperties.cpp. --- .../entities/src/EntityItemProperties.cpp | 482 +++++++++--------- 1 file changed, 241 insertions(+), 241 deletions(-) diff --git a/libraries/entities/src/EntityItemProperties.cpp b/libraries/entities/src/EntityItemProperties.cpp index ebc8ae1c59..37d558f823 100644 --- a/libraries/entities/src/EntityItemProperties.cpp +++ b/libraries/entities/src/EntityItemProperties.cpp @@ -643,33 +643,33 @@ EntityPropertyFlags EntityItemProperties::getChangedProperties() const { } /**jsdoc - * Different entity types have different properties: some common to all entities (listed in the table) and some specific to + * Different entity types have different properties: some common to all entities (listed in the table) and some specific to * each {@link Entities.EntityType|EntityType} (linked to below). * * @typedef {object} Entities.EntityProperties * @property {Uuid} id - The ID of the entity. Read-only. * @property {string} name="" - A name for the entity. Need not be unique. - * @property {Entities.EntityType} type - The entity's type. You cannot change the type of an entity after it's created. - * However, its value may switch among "Box", "Shape", and "Sphere" depending on + * @property {Entities.EntityType} type - The entity's type. You cannot change the type of an entity after it's created. + * However, its value may switch among "Box", "Shape", and "Sphere" depending on * changes to the shape property set for entities of these types. Read-only. * * @property {Entities.EntityHostType} entityHostType="domain" - How the entity is hosted and sent to others for display. * The value can only be set at entity creation by one of the {@link Entities.addEntity} methods. Read-only. - * @property {boolean} avatarEntity=false - true if the entity is an {@link Entities.EntityHostType|avatar entity}, - * false if it isn't. The value is per the entityHostType property value, set at entity creation + * @property {boolean} avatarEntity=false - true if the entity is an {@link Entities.EntityHostType|avatar entity}, + * false if it isn't. The value is per the entityHostType property value, set at entity creation * by one of the {@link Entities.addEntity} methods. Read-only. * @property {boolean} clientOnly=false - A synonym for avatarEntity. Read-only. - * @property {boolean} localEntity=false - true if the entity is a {@link Entities.EntityHostType|local entity}, - * false if it isn't. The value is per the entityHostType property value, set at entity creation + * @property {boolean} localEntity=false - true if the entity is a {@link Entities.EntityHostType|local entity}, + * false if it isn't. The value is per the entityHostType property value, set at entity creation * by one of the {@link Entities.addEntity} methods. Read-only. * - * @property {Uuid} owningAvatarID=Uuid.NULL - The session ID of the owning avatar if avatarEntity is + * @property {Uuid} owningAvatarID=Uuid.NULL - The session ID of the owning avatar if avatarEntity is * true, otherwise {@link Uuid(0)|Uuid.NULL}. Read-only. * * @property {string} created - The UTC date and time that the entity was created, in ISO 8601 format as * yyyy-MM-ddTHH:mm:ssZ. Read-only. * @property {number} age - The age of the entity in seconds since it was created. Read-only. - * @property {string} ageAsText - The age of the entity since it was created, formatted as h hours m minutes s + * @property {string} ageAsText - The age of the entity since it was created, formatted as h hours m minutes s * seconds. * @property {number} lifetime=-1 - How long an entity lives for, in seconds, before being automatically deleted. A value of * -1 means that the entity lives for ever. @@ -678,130 +678,130 @@ EntityPropertyFlags EntityItemProperties::getChangedProperties() const { * @property {Uuid} lastEditedBy - The session ID of the avatar or agent that most recently created or edited the entity. * Read-only. * - * @property {boolean} locked=false - true if properties other than locked cannot be changed and the + * @property {boolean} locked=false - true if properties other than locked cannot be changed and the * entity cannot be deleted, false if all properties can be changed and the entity can be deleted. * @property {boolean} visible=true - true if the entity is rendered, false if it isn't. - * @property {boolean} canCastShadow=true - true if the entity can cast a shadow, false if it can't. - * Currently applicable only to {@link Entities.EntityProperties-Model|Model} and - * {@link Entities.EntityProperties-Shape|Shape} entities. Shadows are cast if inside a - * {@link Entities.EntityProperties-Zone|Zone} entity with castShadows enabled in its keyLight + * @property {boolean} canCastShadow=true - true if the entity can cast a shadow, false if it can't. + * Currently applicable only to {@link Entities.EntityProperties-Model|Model} and + * {@link Entities.EntityProperties-Shape|Shape} entities. Shadows are cast if inside a + * {@link Entities.EntityProperties-Zone|Zone} entity with castShadows enabled in its keyLight * property. - * @property {boolean} isVisibleInSecondaryCamera=true - true if the entity is rendered in the secondary camera, + * @property {boolean} isVisibleInSecondaryCamera=true - true if the entity is rendered in the secondary camera, * false if it isn't. * @property {Entities.RenderLayer} renderLayer="world" - The layer that the entity renders in. * @property {Entities.PrimitiveMode} primitiveMode="solid" - How the entity's geometry is rendered. - * @property {boolean} ignorePickIntersection=false - true if {@link Picks} and {@link RayPick} ignore the entity, + * @property {boolean} ignorePickIntersection=false - true if {@link Picks} and {@link RayPick} ignore the entity, * false if they don't. * * @property {Vec3} position=0,0,0 - The position of the entity in world coordinates. * @property {Quat} rotation=0,0,0,1 - The orientation of the entity in world coordinates. - * @property {Vec3} registrationPoint=0.5,0.5,0.5 - The point in the entity that is set to the entity's position and is rotated - * about, range {@link Vec3(0)|Vec3.ZERO} – {@link Vec3(0)|Vec3.ONE}. A value of {@link Vec3(0)|Vec3.ZERO} is the + * @property {Vec3} registrationPoint=0.5,0.5,0.5 - The point in the entity that is set to the entity's position and is rotated + * about, range {@link Vec3(0)|Vec3.ZERO} – {@link Vec3(0)|Vec3.ONE}. A value of {@link Vec3(0)|Vec3.ZERO} is the * entity's minimum x, y, z corner; a value of {@link Vec3(0)|Vec3.ONE} is the entity's maximum x, y, z corner. * * @property {Vec3} naturalPosition=0,0,0 - The center of the entity's unscaled mesh model if it has one, otherwise * {@link Vec3(0)|Vec3.ZERO}. Read-only. - * @property {Vec3} naturalDimensions - The dimensions of the entity's unscaled mesh model if it has one, otherwise + * @property {Vec3} naturalDimensions - The dimensions of the entity's unscaled mesh model if it has one, otherwise * {@link Vec3(0)|Vec3.ONE}. Read-only. * * @property {Vec3} velocity=0,0,0 - The linear velocity of the entity in m/s with respect to world coordinates. - * @property {number} damping=0.39347 - How much the linear velocity of an entity slows down over time, range - * 0.01.0. A higher damping value slows down the entity more quickly. The default value - * is for an exponential decay timescale of 2.0s, where it takes 2.0s for the movement to slow to 1/e = 0.368 + * @property {number} damping=0.39347 - How much the linear velocity of an entity slows down over time, range + * 0.01.0. A higher damping value slows down the entity more quickly. The default value + * is for an exponential decay timescale of 2.0s, where it takes 2.0s for the movement to slow to 1/e = 0.368 * of its initial value. * @property {Vec3} angularVelocity=0,0,0 - The angular velocity of the entity in rad/s with respect to its axes, about its * registration point. - * @property {number} angularDamping=0.39347 - How much the angular velocity of an entity slows down over time, range - * 0.01.0. A higher damping value slows down the entity more quickly. The default value - * is for an exponential decay timescale of 2.0s, where it takes 2.0s for the movement to slow to 1/e = 0.368 + * @property {number} angularDamping=0.39347 - How much the angular velocity of an entity slows down over time, range + * 0.01.0. A higher damping value slows down the entity more quickly. The default value + * is for an exponential decay timescale of 2.0s, where it takes 2.0s for the movement to slow to 1/e = 0.368 * of its initial value. * - * @property {Vec3} gravity=0,0,0 - The acceleration due to gravity in m/s2 that the entity should move with, in - * world coordinates. Use a value of { x: 0, y: -9.8, z: 0 } to simulate Earth's gravity. Gravity is applied + * @property {Vec3} gravity=0,0,0 - The acceleration due to gravity in m/s2 that the entity should move with, in + * world coordinates. Use a value of { x: 0, y: -9.8, z: 0 } to simulate Earth's gravity. Gravity is applied * to an entity's motion only if its dynamic property is true. - *

If changing an entity's gravity from {@link Vec3(0)|Vec3.ZERO}, you need to give it a small + *

If changing an entity's gravity from {@link Vec3(0)|Vec3.ZERO}, you need to give it a small * velocity in order to kick off physics simulation.

* @property {Vec3} acceleration - The current, measured acceleration of the entity, in m/s2. *

Deprecated: This property is deprecated and will be removed.

- * @property {number} restitution=0.5 - The "bounciness" of an entity when it collides, range 0.0 – + * @property {number} restitution=0.5 - The "bounciness" of an entity when it collides, range 0.0 – * 0.99. The higher the value, the more bouncy. - * @property {number} friction=0.5 - How much an entity slows down when it's moving against another, range 0.0 - * – 10.0. The higher the value, the more quickly it slows down. Examples: 0.1 for ice, + * @property {number} friction=0.5 - How much an entity slows down when it's moving against another, range 0.0 + * – 10.0. The higher the value, the more quickly it slows down. Examples: 0.1 for ice, * 0.9 for sandpaper. - * @property {number} density=1000 - The density of the entity in kg/m3, range 100 – - * 10000. Examples: 100 for balsa wood, 10000 for silver. The density is used in + * @property {number} density=1000 - The density of the entity in kg/m3, range 100 – + * 10000. Examples: 100 for balsa wood, 10000 for silver. The density is used in * conjunction with the entity's bounding box volume to work out its mass in the application of physics. * - * @property {boolean} collisionless=false - true if the entity shouldn't collide, false if it + * @property {boolean} collisionless=false - true if the entity shouldn't collide, false if it * collides with items per its collisionMask property. * @property {boolean} ignoreForCollisions - Synonym for collisionless. * @property {CollisionMask} collisionMask=31 - What types of items the entity should collide with. * @property {string} collidesWith="static,dynamic,kinematic,myAvatar,otherAvatar," - Synonym for collisionMask, * in text format. - * @property {string} collisionSoundURL="" - The sound that's played when the entity experiences a collision. Valid file + * @property {string} collisionSoundURL="" - The sound that's played when the entity experiences a collision. Valid file * formats are per {@link SoundObject}. - * @property {boolean} dynamic=false - true if the entity's movement is affected by collisions, false - * if it isn't. + * @property {boolean} dynamic=false - true if the entity's movement is affected by collisions, false + * if it isn't. * @property {boolean} collisionsWillMove - A synonym for dynamic. * * @property {string} href="" - A "hifi://" metaverse address that a user is teleported to when they click on the entity. * @property {string} description="" - A description of the href property value. * - * @property {string} userData="" - Used to store extra data about the entity in JSON format. - *

Warning: Other apps may also use this property, so make sure you handle data stored by other apps: - * edit only your bit and leave the rest of the data intact. You can use JSON.parse() to parse the string into - * a JavaScript object which you can manipulate the properties of, and use JSON.stringify() to convert the + * @property {string} userData="" - Used to store extra data about the entity in JSON format. + *

Warning: Other apps may also use this property, so make sure you handle data stored by other apps: + * edit only your bit and leave the rest of the data intact. You can use JSON.parse() to parse the string into + * a JavaScript object which you can manipulate the properties of, and use JSON.stringify() to convert the * object into a string to put back in the property.

* - * @property {string} privateUserData="" - Like userData, but only accessible by server entity scripts, assignment + * @property {string} privateUserData="" - Like userData, but only accessible by server entity scripts, assignment * client scripts, and users who have "Can Get and Set Private User Data" permissions in the domain. * * @property {string} script="" - The URL of the client entity script, if any, that is attached to the entity. - * @property {number} scriptTimestamp=0 - Used to indicate when the client entity script was loaded. Should be - * an integer number of milliseconds since midnight GMT on January 1, 1970 (e.g., as supplied by Date.now(). - * If you update the property's value, the script is re-downloaded and reloaded. This is how the "reload" + * @property {number} scriptTimestamp=0 - Used to indicate when the client entity script was loaded. Should be + * an integer number of milliseconds since midnight GMT on January 1, 1970 (e.g., as supplied by Date.now(). + * If you update the property's value, the script is re-downloaded and reloaded. This is how the "reload" * button beside the "script URL" field in properties tab of the Create app works. * @property {string} serverScripts="" - The URL of the server entity script, if any, that is attached to the entity. * - * @property {Uuid} parentID=Uuid.NULL - The ID of the entity or avatar that the entity is parented to. A value of + * @property {Uuid} parentID=Uuid.NULL - The ID of the entity or avatar that the entity is parented to. A value of * {@link Uuid(0)|Uuid.NULL} is used if the entity is not parented. - * @property {number} parentJointIndex=65535 - The joint of the entity or avatar that the entity is parented to. Use + * @property {number} parentJointIndex=65535 - The joint of the entity or avatar that the entity is parented to. Use * 65535 or -1 to parent to the entity or avatar's position and orientation rather than a joint. - * @property {Vec3} localPosition=0,0,0 - The position of the entity relative to its parent if the entity is parented, - * otherwise the same value as position. If the entity is parented to an avatar and is an avatar entity + * @property {Vec3} localPosition=0,0,0 - The position of the entity relative to its parent if the entity is parented, + * otherwise the same value as position. If the entity is parented to an avatar and is an avatar entity * so that it scales with the avatar, this value remains the original local position value while the avatar scale changes. - * @property {Quat} localRotation=0,0,0,1 - The rotation of the entity relative to its parent if the entity is parented, + * @property {Quat} localRotation=0,0,0,1 - The rotation of the entity relative to its parent if the entity is parented, * otherwise the same value as rotation. - * @property {Vec3} localVelocity=0,0,0 - The velocity of the entity relative to its parent if the entity is parented, + * @property {Vec3} localVelocity=0,0,0 - The velocity of the entity relative to its parent if the entity is parented, * otherwise the same value as velocity. - * @property {Vec3} localAngularVelocity=0,0,0 - The angular velocity of the entity relative to its parent if the entity is + * @property {Vec3} localAngularVelocity=0,0,0 - The angular velocity of the entity relative to its parent if the entity is * parented, otherwise the same value as angularVelocity. * @property {Vec3} localDimensions - The dimensions of the entity. If the entity is parented to an avatar and is an - * avatar entity so that it scales with the avatar, this value remains the original dimensions value while the + * avatar entity so that it scales with the avatar, this value remains the original dimensions value while the * avatar scale changes. * - * @property {Entities.BoundingBox} boundingBox - The axis-aligned bounding box that tightly encloses the entity. + * @property {Entities.BoundingBox} boundingBox - The axis-aligned bounding box that tightly encloses the entity. * Read-only. - * @property {AACube} queryAACube - The axis-aligned cube that determines where the entity lives in the entity server's octree. - * The cube may be considerably larger than the entity in some situations, e.g., when the entity is grabbed by an avatar: - * the position of the entity is determined through avatar mixer updates and so the AA cube is expanded in order to reduce + * @property {AACube} queryAACube - The axis-aligned cube that determines where the entity lives in the entity server's octree. + * The cube may be considerably larger than the entity in some situations, e.g., when the entity is grabbed by an avatar: + * the position of the entity is determined through avatar mixer updates and so the AA cube is expanded in order to reduce * unnecessary entity server updates. Scripts should not change this property's value. * * @property {string} actionData="" - Base-64 encoded compressed dump of the actions associated with the entity. This property - * is typically not used in scripts directly; rather, functions that manipulate an entity's actions update it, e.g., - * {@link Entities.addAction}. The size of this property increases with the number of actions. Because this property value + * is typically not used in scripts directly; rather, functions that manipulate an entity's actions update it, e.g., + * {@link Entities.addAction}. The size of this property increases with the number of actions. Because this property value * has to fit within a High Fidelity datagram packet, there is a limit to the number of actions that an entity can have; * edits which would result in overflow are rejected. Read-only. - * @property {Entities.RenderInfo} renderInfo - Information on the cost of rendering the entity. Currently information is only + * @property {Entities.RenderInfo} renderInfo - Information on the cost of rendering the entity. Currently information is only * provided for Model entities. Read-only. * - * @property {boolean} cloneable=false - true if the domain or avatar entity can be cloned via + * @property {boolean} cloneable=false - true if the domain or avatar entity can be cloned via * {@link Entities.cloneEntity}, false if it can't be. * @property {number} cloneLifetime=300 - The entity lifetime for clones created from this entity. * @property {number} cloneLimit=0 - The total number of clones of this entity that can exist in the domain at any given time. - * @property {boolean} cloneDynamic=false - true if clones created from this entity will have their + * @property {boolean} cloneDynamic=false - true if clones created from this entity will have their * dynamic property set to true, false if they won't. - * @property {boolean} cloneAvatarEntity=false - true if clones created from this entity will be created as + * @property {boolean} cloneAvatarEntity=false - true if clones created from this entity will be created as * avatar entities, false if they won't be. * @property {Uuid} cloneOriginID - The ID of the entity that this entity was cloned from. * @@ -816,12 +816,12 @@ EntityPropertyFlags EntityItemProperties::getChangedProperties() const { * @property {string} itemCategories="" - Certifiable category of the Marketplace item. * @property {string} itemArtist="" - Certifiable artist that created the Marketplace item. * @property {string} itemLicense="" - Certifiable license URL for the Marketplace item. - * @property {number} limitedRun=4294967295 - Certifiable maximum integer number of editions (copies) of the Marketplace item + * @property {number} limitedRun=4294967295 - Certifiable maximum integer number of editions (copies) of the Marketplace item * allowed to be sold. - * @property {number} editionNumber=0 - Certifiable integer edition (copy) number or the Marketplace item. Each copy sold in + * @property {number} editionNumber=0 - Certifiable integer edition (copy) number or the Marketplace item. Each copy sold in * the Marketplace is numbered sequentially, starting at 1. - * @property {number} entityInstanceNumber=0 - Certifiable integer instance number for identical entities in a Marketplace - * item. A Marketplace item may have multiple, identical parts. If so, then each is numbered sequentially with an instance + * @property {number} entityInstanceNumber=0 - Certifiable integer instance number for identical entities in a Marketplace + * item. A Marketplace item may have multiple, identical parts. If so, then each is numbered sequentially with an instance * number. * @property {string} marketplaceID="" - Certifiable UUID for the Marketplace item, as used in the URL of the item's download * and its Marketplace Web page. @@ -850,8 +850,8 @@ EntityPropertyFlags EntityItemProperties::getChangedProperties() const { /**jsdoc * The "Box" {@link Entities.EntityType|EntityType} is the same as the "Shape" * {@link Entities.EntityType|EntityType} except that its shape value is always set to "Cube" - * when the entity is created. If its shape property value is subsequently changed then the entity's - * type will be reported as "Sphere" if the shape is set to "Sphere", + * when the entity is created. If its shape property value is subsequently changed then the entity's + * type will be reported as "Sphere" if the shape is set to "Sphere", * otherwise it will be reported as "Shape". * * @typedef {object} Entities.EntityProperties-Box @@ -859,11 +859,11 @@ EntityPropertyFlags EntityItemProperties::getChangedProperties() const { */ /**jsdoc - * The "Light" {@link Entities.EntityType|EntityType} adds local lighting effects. It has properties in addition + * The "Light" {@link Entities.EntityType|EntityType} adds local lighting effects. It has properties in addition * to the common {@link Entities.EntityProperties|EntityProperties}. * * @typedef {object} Entities.EntityProperties-Light - * @property {Vec3} dimensions=0.1,0.1,0.1 - The dimensions of the entity. Surfaces outside these dimensions are not lit + * @property {Vec3} dimensions=0.1,0.1,0.1 - The dimensions of the entity. Surfaces outside these dimensions are not lit * by the light. * @property {Color} color=255,255,255 - The color of the light emitted. * @property {number} intensity=1 - The brightness of the light. @@ -916,46 +916,46 @@ EntityPropertyFlags EntityItemProperties::getChangedProperties() const { */ /**jsdoc - * The "Material" {@link Entities.EntityType|EntityType} modifies existing materials on entities and avatars. It + * The "Material" {@link Entities.EntityType|EntityType} modifies existing materials on entities and avatars. It * has properties in addition to the common {@link Entities.EntityProperties|EntityProperties}. *

To apply a material to an entity, set the material entity's parentID property to the entity ID. * To apply a material to an avatar, set the material entity's parentID property to the avatar's session UUID. - * To apply a material to your avatar such that it persists across domains and log-ins, create the material as an avatar entity - * by setting the entityHostType parameter in {@link Entities.addEntity} to "avatar" and set the - * entity's parentID property to MyAvatar.SELF_ID. + * To apply a material to your avatar such that it persists across domains and log-ins, create the material as an avatar entity + * by setting the entityHostType parameter in {@link Entities.addEntity} to "avatar" and set the + * entity's parentID property to MyAvatar.SELF_ID. * Material entities render as non-scalable spheres if they don't have their parent set.

* * @typedef {object} Entities.EntityProperties-Material * @property {Vec3} dimensions=0.1,0.1,0.1 - Used when materialMappingMode == "projected". - * @property {string} materialURL="" - URL to a {@link Entities.MaterialResource|MaterialResource}. If you append - * "#name" to the URL, the material with that name in the {@link Entities.MaterialResource|MaterialResource} - * will be applied to the entity. Alternatively, set the property value to "materialData" to use the + * @property {string} materialURL="" - URL to a {@link Entities.MaterialResource|MaterialResource}. If you append + * "#name" to the URL, the material with that name in the {@link Entities.MaterialResource|MaterialResource} + * will be applied to the entity. Alternatively, set the property value to "materialData" to use the * materialData property for the {@link Entities.MaterialResource|MaterialResource} values. - * @property {string} materialData="" - Used to store {@link Entities.MaterialResource|MaterialResource} data as a JSON string. - * You can use JSON.parse() to parse the string into a JavaScript object which you can manipulate the + * @property {string} materialData="" - Used to store {@link Entities.MaterialResource|MaterialResource} data as a JSON string. + * You can use JSON.parse() to parse the string into a JavaScript object which you can manipulate the * properties of, and use JSON.stringify() to convert the object into a string to put in the property. * @property {number} priority=0 - The priority for applying the material to its parent. Only the highest priority material is - * applied, with materials of the same priority randomly assigned. Materials that come with the model have a priority of + * applied, with materials of the same priority randomly assigned. Materials that come with the model have a priority of * 0. * @property {string} parentMaterialName="0" - Selects the mesh part or parts within the parent to which to apply the material. * If in the format "mat::string", all mesh parts with material name "string" are replaced. - * If "all", then all mesh parts are replaced. - * Otherwise the property value is parsed as an unsigned integer, specifying the mesh part index to modify. - *

If the string represents an array (starts with "[" and ends with "]"), the string is split - * at each "," and each element parsed as either a number or a string if it starts with "mat::". - * For example, "[0,1,mat::string,mat::string2]" will replace mesh parts 0 and 1, and any mesh parts with - * material "string" or "string2". Do not put spaces around the commas. Invalid values are parsed + * If "all", then all mesh parts are replaced. + * Otherwise the property value is parsed as an unsigned integer, specifying the mesh part index to modify. + *

If the string represents an array (starts with "[" and ends with "]"), the string is split + * at each "," and each element parsed as either a number or a string if it starts with "mat::". + * For example, "[0,1,mat::string,mat::string2]" will replace mesh parts 0 and 1, and any mesh parts with + * material "string" or "string2". Do not put spaces around the commas. Invalid values are parsed * to 0.

- * @property {string} materialMappingMode="uv" - How the material is mapped to the entity. Either "uv" or - * "projected". In "uv" mode, the material is evaluated within the UV space of the mesh it is - * applied to. In "projected" mode, the 3D transform (position, rotation, and dimensions) of the Material + * @property {string} materialMappingMode="uv" - How the material is mapped to the entity. Either "uv" or + * "projected". In "uv" mode, the material is evaluated within the UV space of the mesh it is + * applied to. In "projected" mode, the 3D transform (position, rotation, and dimensions) of the Material * entity is used to evaluate the texture coordinates for the material. - * @property {Vec2} materialMappingPos=0,0 - Offset position in UV-space of the top left of the material, range + * @property {Vec2} materialMappingPos=0,0 - Offset position in UV-space of the top left of the material, range * { x: 0, y: 0 }{ x: 1, y: 1 }. * @property {Vec2} materialMappingScale=1,1 - How much to scale the material within the parent's UV-space. * @property {number} materialMappingRot=0 - How much to rotate the material within the parent's UV-space, in degrees. - * @property {boolean} materialRepeat=true - true if the material repeats, false if it doesn't. If - * false, fragments outside of texCoord 0 – 1 will be discarded. Works in both "uv" and + * @property {boolean} materialRepeat=true - true if the material repeats, false if it doesn't. If + * false, fragments outside of texCoord 0 – 1 will be discarded. Works in both "uv" and * "projected" modes. * @example
* var entityID = Entities.addEntity({ @@ -982,27 +982,27 @@ EntityPropertyFlags EntityItemProperties::getChangedProperties() const { */ /**jsdoc - * The "Model" {@link Entities.EntityType|EntityType} displays a glTF, FBX, or OBJ model. When adding an entity, - * if no dimensions value is specified then the model is automatically sized to its - * {@link Entities.EntityProperties|naturalDimensions}. It has properties in addition to the common + * The "Model" {@link Entities.EntityType|EntityType} displays a glTF, FBX, or OBJ model. When adding an entity, + * if no dimensions value is specified then the model is automatically sized to its + * {@link Entities.EntityProperties|naturalDimensions}. It has properties in addition to the common * {@link Entities.EntityProperties|EntityProperties}. * * @typedef {object} Entities.EntityProperties-Model - * @property {Vec3} dimensions=0.1,0.1,0.1 - The dimensions of the entity. When adding an entity, if no dimensions - * value is specified then the model is automatically sized to its + * @property {Vec3} dimensions=0.1,0.1,0.1 - The dimensions of the entity. When adding an entity, if no dimensions + * value is specified then the model is automatically sized to its * {@link Entities.EntityProperties|naturalDimensions}. - * @property {string} modelURL="" - The URL of the glTF, FBX, or OBJ model. glTF models may be in JSON or binary format - * (".gltf" or ".glb" URLs respectively). Baked models' URLs have ".baked" before the file type. Model files may also be + * @property {string} modelURL="" - The URL of the glTF, FBX, or OBJ model. glTF models may be in JSON or binary format + * (".gltf" or ".glb" URLs respectively). Baked models' URLs have ".baked" before the file type. Model files may also be * compressed in GZ format, in which case the URL ends in ".gz". * @property {Vec3} modelScale - The scale factor applied to the model's dimensions. *

Deprecated: This property is deprecated and will be removed.

* @property {string} textures="" - A JSON string of texture name, URL pairs used when rendering the model in place of the - * model's original textures. Use a texture name from the originalTextures property to override that texture. - * Only the texture names and URLs to be overridden need be specified; original textures are used where there are no - * overrides. You can use JSON.stringify() to convert a JavaScript object of name, URL pairs into a JSON + * model's original textures. Use a texture name from the originalTextures property to override that texture. + * Only the texture names and URLs to be overridden need be specified; original textures are used where there are no + * overrides. You can use JSON.stringify() to convert a JavaScript object of name, URL pairs into a JSON * string. - * @property {string} originalTextures="{}" - A JSON string of texture name, URL pairs used in the model. The property value is - * filled in after the entity has finished rezzing (i.e., textures have loaded). You can use JSON.parse() to + * @property {string} originalTextures="{}" - A JSON string of texture name, URL pairs used in the model. The property value is + * filled in after the entity has finished rezzing (i.e., textures have loaded). You can use JSON.parse() to * parse the JSON string into a JavaScript object of name, URL pairs. Read-only. * @property {Color} color=255,255,255 - Currently not used. * @@ -1012,28 +1012,28 @@ EntityPropertyFlags EntityItemProperties::getChangedProperties() const { * * @property {Entities.AnimationProperties} animation - An animation to play on the model. * - * @property {Quat[]} jointRotations=[]] - Joint rotations applied to the model; [] if none are applied or the - * model hasn't loaded. The array indexes are per {@link Entities.getJointIndex|getJointIndex}. Rotations are relative to + * @property {Quat[]} jointRotations=[]] - Joint rotations applied to the model; [] if none are applied or the + * model hasn't loaded. The array indexes are per {@link Entities.getJointIndex|getJointIndex}. Rotations are relative to * each joint's parent. - *

Joint rotations can be set by {@link Entities.setLocalJointRotation|setLocalJointRotation} and similar functions, or - * by setting the value of this property. If you set a joint rotation using this property, you also need to set the + *

Joint rotations can be set by {@link Entities.setLocalJointRotation|setLocalJointRotation} and similar functions, or + * by setting the value of this property. If you set a joint rotation using this property, you also need to set the * corresponding jointRotationsSet value to true.

- * @property {boolean[]} jointRotationsSet=[]] - true values for joints that have had rotations applied, - * false otherwise; [] if none are applied or the model hasn't loaded. The array indexes are per + * @property {boolean[]} jointRotationsSet=[]] - true values for joints that have had rotations applied, + * false otherwise; [] if none are applied or the model hasn't loaded. The array indexes are per * {@link Entities.getJointIndex|getJointIndex}. - * @property {Vec3[]} jointTranslations=[]] - Joint translations applied to the model; [] if none are applied or - * the model hasn't loaded. The array indexes are per {@link Entities.getJointIndex|getJointIndex}. Translations are + * @property {Vec3[]} jointTranslations=[]] - Joint translations applied to the model; [] if none are applied or + * the model hasn't loaded. The array indexes are per {@link Entities.getJointIndex|getJointIndex}. Translations are * relative to each joint's parent. - *

Joint translations can be set by {@link Entities.setLocalJointTranslation|setLocalJointTranslation} and similar - * functions, or by setting the value of this property. If you set a joint translation using this property you also need to + *

Joint translations can be set by {@link Entities.setLocalJointTranslation|setLocalJointTranslation} and similar + * functions, or by setting the value of this property. If you set a joint translation using this property you also need to * set the corresponding jointTranslationsSet value to true.

- * @property {boolean[]} jointTranslationsSet=[]] - true values for joints that have had translations applied, - * false otherwise; [] if none are applied or the model hasn't loaded. The array indexes are per + * @property {boolean[]} jointTranslationsSet=[]] - true values for joints that have had translations applied, + * false otherwise; [] if none are applied or the model hasn't loaded. The array indexes are per * {@link Entities.getJointIndex|getJointIndex}. - * @property {boolean} relayParentJoints=false - true if when the entity is parented to an avatar, the avatar's - * joint rotations are applied to the entity's joints; false if a parent avatar's joint rotations are not + * @property {boolean} relayParentJoints=false - true if when the entity is parented to an avatar, the avatar's + * joint rotations are applied to the entity's joints; false if a parent avatar's joint rotations are not * applied to the entity's joints. - * @property {boolean} groupCulled=false - true if the mesh parts of the model are LOD culled as a group, + * @property {boolean} groupCulled=false - true if the mesh parts of the model are LOD culled as a group, * false if separate mesh parts are LOD culled individually. * * @example
@@ -1054,15 +1054,15 @@ EntityPropertyFlags EntityItemProperties::getChangedProperties() const { * * @typedef {object} Entities.EntityProperties-ParticleEffect * @property {boolean} isEmitting=true - true if particles are being emitted, false if they aren't. - * @property {number} maxParticles=1000 - The maximum number of particles to render at one time. Older particles are deleted if + * @property {number} maxParticles=1000 - The maximum number of particles to render at one time. Older particles are deleted if * necessary when new ones are created. * @property {number} lifespan=3s - How long, in seconds, each particle lives. * @property {number} emitRate=15 - The number of particles per second to emit. * @property {number} emitSpeed=5 - The speed, in m/s, that each particle is emitted at. - * @property {number} speedSpread=1 - The spread in speeds at which particles are emitted at. For example, if - * emitSpeed == 5 and speedSpread == 1, particles will be emitted with speeds in the range + * @property {number} speedSpread=1 - The spread in speeds at which particles are emitted at. For example, if + * emitSpeed == 5 and speedSpread == 1, particles will be emitted with speeds in the range * 46m/s. - * @property {Vec3} emitAcceleration=0,-9.8,0 - The acceleration that is applied to each particle during its lifetime. The + * @property {Vec3} emitAcceleration=0,-9.8,0 - The acceleration that is applied to each particle during its lifetime. The * default is Earth's gravity value. * @property {Vec3} accelerationSpread=0,0,0 - The spread in accelerations that each particle is given. For example, if * emitAccelerations == {x: 0, y: -9.8, z: 0} and accelerationSpread == @@ -1074,33 +1074,33 @@ EntityPropertyFlags EntityItemProperties::getChangedProperties() const { * false if they stay within the entity's dimensions. * * @property {Quat} emitOrientation=-0.707,0,0,0.707 - The orientation of particle emission relative to the entity's axes. By - * default, particles emit along the entity's local z-axis, and azimuthStart and azimuthFinish - * are relative to the entity's local x-axis. The default value is a rotation of -90 degrees about the local x-axis, i.e., + * default, particles emit along the entity's local z-axis, and azimuthStart and azimuthFinish + * are relative to the entity's local x-axis. The default value is a rotation of -90 degrees about the local x-axis, i.e., * the particles emit vertically. * * @property {ShapeType} shapeType="ellipsoid" - The shape from which particles are emitted. - * @property {string} compoundShapeURL="" - The model file to use for the compound shape if shapeType == + * @property {string} compoundShapeURL="" - The model file to use for the compound shape if shapeType == * "compound". * @property {Vec3} emitDimensions=0,0,0 - The dimensions of the shape from which particles are emitted. * @property {number} emitRadiusStart=1 - The starting radius within the shape at which particles start being emitted; * range 0.01.0 for the center to the surface, respectively. - * Particles are emitted from the portion of the shape that lies between emitRadiusStart and the + * Particles are emitted from the portion of the shape that lies between emitRadiusStart and the * shape's surface. - * @property {number} polarStart=0 - The angle in radians from the entity's local z-axis at which particles start being emitted - * within the shape; range 0Math.PI. Particles are emitted from the portion of the + * @property {number} polarStart=0 - The angle in radians from the entity's local z-axis at which particles start being emitted + * within the shape; range 0Math.PI. Particles are emitted from the portion of the * shape that lies between polarStart and polarFinish. Only used if shapeType is * "ellipsoid" or "sphere". - * @property {number} polarFinish=0 - The angle in radians from the entity's local z-axis at which particles stop being emitted - * within the shape; range 0Math.PI. Particles are emitted from the portion of the + * @property {number} polarFinish=0 - The angle in radians from the entity's local z-axis at which particles stop being emitted + * within the shape; range 0Math.PI. Particles are emitted from the portion of the * shape that lies between polarStart and polarFinish. Only used if shapeType is * "ellipsoid" or "sphere". - * @property {number} azimuthStart=-Math.PI - The angle in radians from the entity's local x-axis about the entity's local - * z-axis at which particles start being emitted; range -Math.PIMath.PI. Particles are - * emitted from the portion of the shape that lies between azimuthStart and azimuthFinish. + * @property {number} azimuthStart=-Math.PI - The angle in radians from the entity's local x-axis about the entity's local + * z-axis at which particles start being emitted; range -Math.PIMath.PI. Particles are + * emitted from the portion of the shape that lies between azimuthStart and azimuthFinish. * Only used if shapeType is "ellipsoid", "sphere", or "circle". * @property {number} azimuthFinish=Math.PI - The angle in radians from the entity's local x-axis about the entity's local * z-axis at which particles stop being emitted; range -Math.PIMath.PI. Particles are - * emitted from the portion of the shape that lies between azimuthStart and azimuthFinish. + * emitted from the portion of the shape that lies between azimuthStart and azimuthFinish. * Only used if shapeType is "ellipsoid", "sphere", or "circle". * * @property {string} textures="" - The URL of a JPG or PNG image file to display for each particle. If you want transparency, @@ -1110,40 +1110,40 @@ EntityPropertyFlags EntityItemProperties::getChangedProperties() const { * particleRadius value is used. * @property {number} radiusFinish=null - The radius of each particle at the end of its life. If null, the * particleRadius value is used. - * @property {number} radiusSpread=0 - The spread in radius that each particle is given. For example, if - * particleRadius == 0.5 and radiusSpread == 0.25, each particle will have a radius in the range + * @property {number} radiusSpread=0 - The spread in radius that each particle is given. For example, if + * particleRadius == 0.5 and radiusSpread == 0.25, each particle will have a radius in the range * 0.250.75. * @property {Color} color=255,255,255 - The color of each particle at the middle of its life. - * @property {ColorFloat} colorStart=null,null,null - The color of each particle at the start of its life. If any of the + * @property {ColorFloat} colorStart=null,null,null - The color of each particle at the start of its life. If any of the * component values are undefined, the color value is used. - * @property {ColorFloat} colorFinish=null,null,null - The color of each particle at the end of its life. If any of the + * @property {ColorFloat} colorFinish=null,null,null - The color of each particle at the end of its life. If any of the * component values are undefined, the color value is used. * @property {Color} colorSpread=0,0,0 - The spread in color that each particle is given. For example, if * color == {red: 100, green: 100, blue: 100} and colorSpread == - * {red: 10, green: 25, blue: 50}, each particle will have a color in the range + * {red: 10, green: 25, blue: 50}, each particle will have a color in the range * {red: 90, green: 75, blue: 50}{red: 110, green: 125, blue: 150}. * @property {number} alpha=1 - The opacity of each particle at the middle of its life. * @property {number} alphaStart=null - The opacity of each particle at the start of its life. If null, the * alpha value is used. * @property {number} alphaFinish=null - The opacity of each particle at the end of its life. If null, the * alpha value is used. - * @property {number} alphaSpread=0 - The spread in alpha that each particle is given. For example, if - * alpha == 0.5 and alphaSpread == 0.25, each particle will have an alpha in the range + * @property {number} alphaSpread=0 - The spread in alpha that each particle is given. For example, if + * alpha == 0.5 and alphaSpread == 0.25, each particle will have an alpha in the range * 0.250.75. * @property {Entities.Pulse} pulse - Color and alpha pulse. *

Deprecated: This property is deprecated and will be removed.

- * @property {number} particleSpin=0 - The rotation of each particle at the middle of its life, range -2 * Math.PI + * @property {number} particleSpin=0 - The rotation of each particle at the middle of its life, range -2 * Math.PI * – 2 * Math.PI radians. - * @property {number} spinStart=null - The rotation of each particle at the start of its life, range -2 * Math.PI + * @property {number} spinStart=null - The rotation of each particle at the start of its life, range -2 * Math.PI * – 2 * Math.PI radians. If null, the particleSpin value is used. - * @property {number} spinFinish=null - The rotation of each particle at the end of its life, range -2 * Math.PI + * @property {number} spinFinish=null - The rotation of each particle at the end of its life, range -2 * Math.PI * – 2 * Math.PI radians. If null, the particleSpin value is used. - * @property {number} spinSpread=0 - The spread in spin that each particle is given, range 0 – - * 2 * Math.PI radians. For example, if particleSpin == Math.PI and - * spinSpread == Math.PI / 2, each particle will have a rotation in the range Math.PI / 2 – + * @property {number} spinSpread=0 - The spread in spin that each particle is given, range 0 – + * 2 * Math.PI radians. For example, if particleSpin == Math.PI and + * spinSpread == Math.PI / 2, each particle will have a rotation in the range Math.PI / 2 – * 3 * Math.PI / 2. - * @property {boolean} rotateWithEntity=false - true if the particles' rotations are relative to the entity's - * instantaneous rotation, false if they're relative to world coordinates. If true with + * @property {boolean} rotateWithEntity=false - true if the particles' rotations are relative to the entity's + * instantaneous rotation, false if they're relative to world coordinates. If true with * particleSpin == 0, the particles keep oriented per the entity's orientation. * * @example
@@ -1169,27 +1169,27 @@ EntityPropertyFlags EntityItemProperties::getChangedProperties() const { * points. It has properties in addition to the common {@link Entities.EntityProperties|EntityProperties}. * * @typedef {object} Entities.EntityProperties-PolyLine - * @property {Vec3} dimensions=0.1,0.1,0.1 - The dimensions of the entity, i.e., the size of the bounding box that contains the + * @property {Vec3} dimensions=0.1,0.1,0.1 - The dimensions of the entity, i.e., the size of the bounding box that contains the * lines drawn. Read-only. * @property {Vec3[]} linePoints=[]] - The sequence of points to draw lines between. The values are relative to the entity's * position. A maximum of 70 points can be specified. - * @property {Vec3[]} normals=[]] - The normal vectors for the line's surface at the linePoints. The values are + * @property {Vec3[]} normals=[]] - The normal vectors for the line's surface at the linePoints. The values are * relative to the entity's orientation. Must be specified in order for the entity to render. - * @property {number[]} strokeWidths=[]] - The widths, in m, of the line at the linePoints. Must be specified in + * @property {number[]} strokeWidths=[]] - The widths, in m, of the line at the linePoints. Must be specified in * order for the entity to render. - * @property {Vec3[]} strokeColors=[]] - The base colors of each point, with values in the range 0.0,0.0,0.0 - * – 1.0,1.0,1.0. These colors are multiplied with the color of the texture. If there are more line + * @property {Vec3[]} strokeColors=[]] - The base colors of each point, with values in the range 0.0,0.0,0.0 + * – 1.0,1.0,1.0. These colors are multiplied with the color of the texture. If there are more line * points than stroke colors, the color property value is used for the remaining points. *

Warning: The ordinate values are in the range 0.01.0.

- * @property {Color} color=255,255,255 - Used as the color for each point if strokeColors doesn't have a value for + * @property {Color} color=255,255,255 - Used as the color for each point if strokeColors doesn't have a value for * the point. * @property {string} textures="" - The URL of a JPG or PNG texture to use for the lines. If you want transparency, use PNG * format. - * @property {boolean} isUVModeStretch=true - true if the texture is stretched to fill the whole line, + * @property {boolean} isUVModeStretch=true - true if the texture is stretched to fill the whole line, * false if the texture repeats along the line. - * @property {boolean} glow=false - true if the opacity of the strokes drops off away from the line center, + * @property {boolean} glow=false - true if the opacity of the strokes drops off away from the line center, * false if it doesn't. - * @property {boolean} faceCamera=false - true if each line segment rotates to face the camera, false + * @property {boolean} faceCamera=false - true if each line segment rotates to face the camera, false * if they don't. * @example
* var entity = Entities.addEntity({ @@ -1224,34 +1224,34 @@ EntityPropertyFlags EntityItemProperties::getChangedProperties() const { * * @typedef {object} Entities.EntityProperties-PolyVox * @property {Vec3} dimensions=0.1,0.1,0.1 - The dimensions of the entity. - * @property {Vec3} voxelVolumeSize=32,32,32 - Integer number of voxels along each axis of the entity, in the range - * 1,1,1 to 128,128,128. The dimensions of each voxel is + * @property {Vec3} voxelVolumeSize=32,32,32 - Integer number of voxels along each axis of the entity, in the range + * 1,1,1 to 128,128,128. The dimensions of each voxel is * dimensions / voxelVolumesize. - * @property {string} voxelData="ABAAEAAQAAAAHgAAEAB42u3BAQ0AAADCoPdPbQ8HFAAAAPBuEAAAAQ==" - Base-64 encoded compressed dump of - * the PolyVox data. This property is typically not used in scripts directly; rather, functions that manipulate a PolyVox + * @property {string} voxelData="ABAAEAAQAAAAHgAAEAB42u3BAQ0AAADCoPdPbQ8HFAAAAPBuEAAAAQ==" - Base-64 encoded compressed dump of + * the PolyVox data. This property is typically not used in scripts directly; rather, functions that manipulate a PolyVox * entity update it. - *

The size of this property increases with the size and complexity of the PolyVox entity, with the size depending on how - * the particular entity's voxels compress. Because this property value has to fit within a High Fidelity datagram packet, + *

The size of this property increases with the size and complexity of the PolyVox entity, with the size depending on how + * the particular entity's voxels compress. Because this property value has to fit within a High Fidelity datagram packet, * there is a limit to the size and complexity of a PolyVox entity; edits which would result in an overflow are rejected.

- * @property {Entities.PolyVoxSurfaceStyle} voxelSurfaceStyle=2 - The style of rendering the voxels' surface and how + * @property {Entities.PolyVoxSurfaceStyle} voxelSurfaceStyle=2 - The style of rendering the voxels' surface and how * neighboring PolyVox entities are joined. - * @property {string} xTextureURL="" - The URL of the texture to map to surfaces perpendicular to the entity's local x-axis. + * @property {string} xTextureURL="" - The URL of the texture to map to surfaces perpendicular to the entity's local x-axis. * JPG or PNG format. If no texture is specified the surfaces display white. - * @property {string} yTextureURL="" - The URL of the texture to map to surfaces perpendicular to the entity's local y-axis. + * @property {string} yTextureURL="" - The URL of the texture to map to surfaces perpendicular to the entity's local y-axis. * JPG or PNG format. If no texture is specified the surfaces display white. - * @property {string} zTextureURL="" - The URL of the texture to map to surfaces perpendicular to the entity's local z-axis. + * @property {string} zTextureURL="" - The URL of the texture to map to surfaces perpendicular to the entity's local z-axis. * JPG or PNG format. If no texture is specified the surfaces display white. - * @property {Uuid} xNNeighborID=Uuid.NULL - The ID of the neighboring PolyVox entity in the entity's -ve local x-axis + * @property {Uuid} xNNeighborID=Uuid.NULL - The ID of the neighboring PolyVox entity in the entity's -ve local x-axis * direction, if you want them joined. Set to {@link Uuid(0)|Uuid.NULL} if there is none or you don't want to join them. - * @property {Uuid} yNNeighborID=Uuid.NULL - The ID of the neighboring PolyVox entity in the entity's -ve local y-axis + * @property {Uuid} yNNeighborID=Uuid.NULL - The ID of the neighboring PolyVox entity in the entity's -ve local y-axis * direction, if you want them joined. Set to {@link Uuid(0)|Uuid.NULL} if there is none or you don't want to join them. - * @property {Uuid} zNNeighborID=Uuid.NULL - The ID of the neighboring PolyVox entity in the entity's -ve local z-axis + * @property {Uuid} zNNeighborID=Uuid.NULL - The ID of the neighboring PolyVox entity in the entity's -ve local z-axis * direction, if you want them joined. Set to {@link Uuid(0)|Uuid.NULL} if there is none or you don't want to join them. - * @property {Uuid} xPNeighborID=Uuid.NULL - The ID of the neighboring PolyVox entity in the entity's +ve local x-axis + * @property {Uuid} xPNeighborID=Uuid.NULL - The ID of the neighboring PolyVox entity in the entity's +ve local x-axis * direction, if you want them joined. Set to {@link Uuid(0)|Uuid.NULL} if there is none or you don't want to join them. - * @property {Uuid} yPNeighborID=Uuid.NULL - The ID of the neighboring PolyVox entity in the entity's +ve local y-axis + * @property {Uuid} yPNeighborID=Uuid.NULL - The ID of the neighboring PolyVox entity in the entity's +ve local y-axis * direction, if you want them joined. Set to {@link Uuid(0)|Uuid.NULL} if there is none or you don't want to join them. - * @property {Uuid} zPNeighborID=Uuid.NULL - The ID of the neighboring PolyVox entity in the entity's +ve local z-axis + * @property {Uuid} zPNeighborID=Uuid.NULL - The ID of the neighboring PolyVox entity in the entity's +ve local z-axis * direction, if you want them joined. Set to {@link Uuid(0)|Uuid.NULL} if there is none or you don't want to join them. * @example
* var position = Vec3.sum(MyAvatar.position, Vec3.multiplyQbyV(MyAvatar.orientation, { x: 0, y: 0.5, z: -8 })); @@ -1292,8 +1292,8 @@ EntityPropertyFlags EntityItemProperties::getChangedProperties() const { /**jsdoc * The "Sphere" {@link Entities.EntityType|EntityType} is the same as the "Shape" * {@link Entities.EntityType|EntityType} except that its shape value is always set to "Sphere" - * when the entity is created. If its shape property value is subsequently changed then the entity's - * type will be reported as "Box" if the shape is set to "Cube", + * when the entity is created. If its shape property value is subsequently changed then the entity's + * type will be reported as "Box" if the shape is set to "Cube", * otherwise it will be reported as "Shape". * * @typedef {object} Entities.EntityProperties-Sphere @@ -1319,7 +1319,7 @@ EntityPropertyFlags EntityItemProperties::getChangedProperties() const { * @property {number} rightMargin=0.0 - The right margin, in meters. * @property {number} topMargin=0.0 - The top margin, in meters. * @property {number} bottomMargin=0.0 - The bottom margin, in meters. - * @property {boolean} unlit=false - true if the entity is unaffected by lighting, false if it is lit + * @property {boolean} unlit=false - true if the entity is unaffected by lighting, false if it is lit * by the key light and local lights. * @property {string} font="" - The font to render the text with. It can be one of the following: "Courier", * "Inconsolata", "Roboto", "Timeless", or a path to a .sdff file. @@ -1327,10 +1327,10 @@ EntityPropertyFlags EntityItemProperties::getChangedProperties() const { * @property {Color} textEffectColor=255,255,255 - The color of the effect. * @property {number} textEffectThickness=0.2 - The magnitude of the text effect, range 0.00.5. * @property {BillboardMode} billboardMode="none" - Whether the entity is billboarded to face the camera. - * @property {boolean} faceCamera - true if billboardMode is "yaw", false + * @property {boolean} faceCamera - true if billboardMode is "yaw", false * if it isn't. Setting this property to false sets the billboardMode to "none". *

Deprecated: This property is deprecated and will be removed.

- * @property {boolean} isFacingAvatar - true if billboardMode is "full", + * @property {boolean} isFacingAvatar - true if billboardMode is "full", * false if it isn't. Setting this property to false sets the billboardMode to * "none". *

Deprecated: This property is deprecated and will be removed.

@@ -1348,41 +1348,41 @@ EntityPropertyFlags EntityItemProperties::getChangedProperties() const { /**jsdoc * The "Web" {@link Entities.EntityType|EntityType} displays a browsable web page. Each user views their own copy - * of the web page: if one user navigates to another page on the entity, other users do not see the change; if a video is being - * played, users don't see it in sync. It has properties in addition to the common + * of the web page: if one user navigates to another page on the entity, other users do not see the change; if a video is being + * played, users don't see it in sync. It has properties in addition to the common * {@link Entities.EntityProperties|EntityProperties}. * * @typedef {object} Entities.EntityProperties-Web * @property {Vec3} dimensions=0.1,0.1,0.01 - The dimensions of the entity. * @property {string} sourceUrl="" - The URL of the web page to display. This value does not change as you or others navigate * on the Web entity. - * @property {Color} color=255,255,255 - The color of the web surface. This color tints the web page displayed: the pixel - * colors on the web page are multiplied by the property color. For example, a value of + * @property {Color} color=255,255,255 - The color of the web surface. This color tints the web page displayed: the pixel + * colors on the web page are multiplied by the property color. For example, a value of * { red: 255, green: 0, blue: 0 } lets only the red channel of pixels' colors through. * @property {number} alpha=1 - The opacity of the web surface. * @property {Entities.Pulse} pulse - Color and alpha pulse. *

Deprecated: This property is deprecated and will be removed.

* @property {BillboardMode} billboardMode="none" - Whether the entity is billboarded to face the camera. - * @property {boolean} faceCamera - true if billboardMode is "yaw", false + * @property {boolean} faceCamera - true if billboardMode is "yaw", false * if it isn't. Setting this property to false sets the billboardMode to "none". *

Deprecated: This property is deprecated and will be removed.

- * @property {boolean} isFacingAvatar - true if billboardMode is "full", + * @property {boolean} isFacingAvatar - true if billboardMode is "full", * false if it isn't. Setting this property to false sets the billboardMode to * "none". *

Deprecated: This property is deprecated and will be removed.

- * @property {number} dpi=30 - The resolution to display the page at, in dots per inch. If you convert this to dots per meter - * (multiply by 1 / 0.0254 = 39.3701) then multiply dimensions.x and dimensions.y by that value + * @property {number} dpi=30 - The resolution to display the page at, in dots per inch. If you convert this to dots per meter + * (multiply by 1 / 0.0254 = 39.3701) then multiply dimensions.x and dimensions.y by that value * you get the resolution in pixels. * @property {string} scriptURL="" - The URL of a JavaScript file to inject into the web page. * @property {number} maxFPS=10 - The maximum update rate for the web content, in frames/second. * @property {WebInputMode} inputMode="touch" - The user input mode to use. - * @property {boolean} showKeyboardFocusHighlight=true - true if the entity is highlighted when it has keyboard + * @property {boolean} showKeyboardFocusHighlight=true - true if the entity is highlighted when it has keyboard * focus, false if it isn't. * @example
* var METERS_TO_INCHES = 39.3701; * var entity = Entities.addEntity({ * type: "Web", - * sourceUrl: "https://projectathena.io/", + * sourceUrl: "https://vircadia.com/", * position: Vec3.sum(MyAvatar.position, Vec3.multiplyQbyV(MyAvatar.orientation, { x: 0, y: 0.75, z: -4 })), * rotation: MyAvatar.orientation, * dimensions: { @@ -1397,17 +1397,17 @@ EntityPropertyFlags EntityItemProperties::getChangedProperties() const { /**jsdoc * The "Zone" {@link Entities.EntityType|EntityType} is a volume of lighting effects and avatar permissions. - * Avatar interaction events such as {@link Entities.enterEntity} are also often used with a Zone entity. It has properties in + * Avatar interaction events such as {@link Entities.enterEntity} are also often used with a Zone entity. It has properties in * addition to the common {@link Entities.EntityProperties|EntityProperties}. * * @typedef {object} Entities.EntityProperties-Zone - * @property {Vec3} dimensions=0.1,0.1,0.1 - The dimensions of the volume in which the zone's lighting effects and avatar + * @property {Vec3} dimensions=0.1,0.1,0.1 - The dimensions of the volume in which the zone's lighting effects and avatar * permissions have effect. * * @property {ShapeType} shapeType="box" - The shape of the volume in which the zone's lighting effects and avatar - * permissions have effect. Reverts to the default value if set to "none", or set to "compound" + * permissions have effect. Reverts to the default value if set to "none", or set to "compound" * and compoundShapeURL is "". - * @property {string} compoundShapeURL="" - The model file to use for the compound shape if shapeType is + * @property {string} compoundShapeURL="" - The model file to use for the compound shape if shapeType is * "compound". * * @property {Entities.ComponentMode} keyLightMode="inherit" - Configures the key light in the zone. @@ -1425,14 +1425,14 @@ EntityPropertyFlags EntityItemProperties::getChangedProperties() const { * @property {Entities.ComponentMode} bloomMode="inherit" - Configures the bloom in the zone. * @property {Entities.Bloom} bloom - The bloom properties of the zone. * - * @property {boolean} flyingAllowed=true - true if visitors can fly in the zone; false if they + * @property {boolean} flyingAllowed=true - true if visitors can fly in the zone; false if they * cannot. Only works for domain entities. - * @property {boolean} ghostingAllowed=true - true if visitors with avatar collisions turned off will not - * collide with content in the zone; false if visitors will always collide with content in the zone. Only + * @property {boolean} ghostingAllowed=true - true if visitors with avatar collisions turned off will not + * collide with content in the zone; false if visitors will always collide with content in the zone. Only * works for domain entities. * - * @property {string} filterURL="" - The URL of a JavaScript file that filters changes to properties of entities within the - * zone. It is periodically executed for each entity in the zone. It can, for example, be used to not allow changes to + * @property {string} filterURL="" - The URL of a JavaScript file that filters changes to properties of entities within the + * zone. It is periodically executed for each entity in the zone. It can, for example, be used to not allow changes to * certain properties: *
  * function filter(properties) {
@@ -1442,7 +1442,7 @@ EntityPropertyFlags EntityItemProperties::getChangedProperties() const {
  * }
  * 
* - * @property {Entities.AvatarPriorityMode} avatarPriority="inherit" - Configures the priority of updates from avatars in the + * @property {Entities.AvatarPriorityMode} avatarPriority="inherit" - Configures the priority of updates from avatars in the * zone to other clients. * * @property {Entities.ScreenshareMode} screenshare="inherit" - Configures a zone for screen-sharing. @@ -1468,21 +1468,21 @@ EntityPropertyFlags EntityItemProperties::getChangedProperties() const { * @typedef {object} Entities.EntityProperties-Image * @property {Vec3} dimensions=0.1,0.1,0.01 - The dimensions of the entity. * @property {string} imageURL="" - The URL of the image to use. - * @property {boolean} emissive=false - true if the image should be emissive (unlit), false if it + * @property {boolean} emissive=false - true if the image should be emissive (unlit), false if it * shouldn't. - * @property {boolean} keepAspectRatio=true - true if the image should maintain its aspect ratio, + * @property {boolean} keepAspectRatio=true - true if the image should maintain its aspect ratio, * false if it shouldn't. - * @property {Rect} subImage=0,0,0,0 - The portion of the image to display. If width or height are 0, it defaults + * @property {Rect} subImage=0,0,0,0 - The portion of the image to display. If width or height are 0, it defaults * to the full image in that dimension. * @property {Color} color=255,255,255 - The color of the image. * @property {number} alpha=1 - The opacity of the image. * @property {Entities.Pulse} pulse - Color and alpha pulse. *

Deprecated: This property is deprecated and will be removed.

* @property {BillboardMode} billboardMode="none" - Whether the entity is billboarded to face the camera. - * @property {boolean} faceCamera - true if billboardMode is "yaw", false + * @property {boolean} faceCamera - true if billboardMode is "yaw", false * if it isn't. Setting this property to false sets the billboardMode to "none". *

Deprecated: This property is deprecated and will be removed.

- * @property {boolean} isFacingAvatar - true if billboardMode is "full", + * @property {boolean} isFacingAvatar - true if billboardMode is "full", * false if it isn't. Setting this property to false sets the billboardMode to * "none". *

Deprecated: This property is deprecated and will be removed.

@@ -1942,13 +1942,13 @@ QScriptValue EntityItemProperties::copyToScriptValue(QScriptEngine* engine, bool QScriptValue renderInfo = engine->newObject(); /**jsdoc - * Information on how an entity is rendered. Properties are only filled in for Model entities; other + * Information on how an entity is rendered. Properties are only filled in for Model entities; other * entity types have an empty object, {}. * @typedef {object} Entities.RenderInfo * @property {number} verticesCount - The number of vertices in the entity. * @property {number} texturesCount - The number of textures in the entity. * @property {number} texturesSize - The total size of the textures in the entity, in bytes. - * @property {boolean} hasTransparent - true if any of the textures has transparency, false + * @property {boolean} hasTransparent - true if any of the textures has transparency, false * if none of them do. * @property {number} drawCalls - The number of draw calls required to render the entity. */ @@ -2597,7 +2597,7 @@ bool EntityItemProperties::getPropertyInfo(const QString& propertyName, EntityPr ADD_PROPERTY_TO_MAP(PROP_POSITION, Position, position, vec3); ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_DIMENSIONS, Dimensions, dimensions, vec3, ENTITY_ITEM_MIN_DIMENSION, FLT_MAX); ADD_PROPERTY_TO_MAP(PROP_ROTATION, Rotation, rotation, quat); - ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_REGISTRATION_POINT, RegistrationPoint, registrationPoint, vec3, + ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_REGISTRATION_POINT, RegistrationPoint, registrationPoint, vec3, ENTITY_ITEM_MIN_REGISTRATION_POINT, ENTITY_ITEM_MAX_REGISTRATION_POINT); ADD_PROPERTY_TO_MAP(PROP_CREATED, Created, created, quint64); ADD_PROPERTY_TO_MAP(PROP_LAST_EDITED_BY, LastEditedBy, lastEditedBy, QUuid); @@ -2634,19 +2634,19 @@ bool EntityItemProperties::getPropertyInfo(const QString& propertyName, EntityPr } // Physics - ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_DENSITY, Density, density, float, + ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_DENSITY, Density, density, float, ENTITY_ITEM_MIN_DENSITY, ENTITY_ITEM_MAX_DENSITY); ADD_PROPERTY_TO_MAP(PROP_VELOCITY, Velocity, velocity, vec3); ADD_PROPERTY_TO_MAP(PROP_ANGULAR_VELOCITY, AngularVelocity, angularVelocity, vec3); ADD_PROPERTY_TO_MAP(PROP_GRAVITY, Gravity, gravity, vec3); ADD_PROPERTY_TO_MAP(PROP_ACCELERATION, Acceleration, acceleration, vec3); - ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_DAMPING, Damping, damping, float, + ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_DAMPING, Damping, damping, float, ENTITY_ITEM_MIN_DAMPING, ENTITY_ITEM_MAX_DAMPING); - ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_ANGULAR_DAMPING, AngularDamping, angularDamping, float, + ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_ANGULAR_DAMPING, AngularDamping, angularDamping, float, ENTITY_ITEM_MIN_DAMPING, ENTITY_ITEM_MAX_DAMPING); - ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_RESTITUTION, Restitution, restitution, float, + ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_RESTITUTION, Restitution, restitution, float, ENTITY_ITEM_MIN_RESTITUTION, ENTITY_ITEM_MAX_RESTITUTION); - ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_FRICTION, Friction, friction, float, + ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_FRICTION, Friction, friction, float, ENTITY_ITEM_MIN_FRICTION, ENTITY_ITEM_MAX_FRICTION); ADD_PROPERTY_TO_MAP(PROP_LIFETIME, Lifetime, lifetime, float); ADD_PROPERTY_TO_MAP(PROP_COLLISIONLESS, Collisionless, collisionless, bool); @@ -2690,7 +2690,7 @@ bool EntityItemProperties::getPropertyInfo(const QString& propertyName, EntityPr ADD_PROPERTY_TO_MAP(PROP_LOCAL_ROTATION, LocalRotation, localRotation, quat); ADD_PROPERTY_TO_MAP(PROP_LOCAL_VELOCITY, LocalVelocity, localVelocity, vec3); ADD_PROPERTY_TO_MAP(PROP_LOCAL_ANGULAR_VELOCITY, LocalAngularVelocity, localAngularVelocity, vec3); - ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_LOCAL_DIMENSIONS, LocalDimensions, localDimensions, vec3, + ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_LOCAL_DIMENSIONS, LocalDimensions, localDimensions, vec3, ENTITY_ITEM_MIN_DIMENSION, FLT_MAX); // Common @@ -2709,59 +2709,59 @@ bool EntityItemProperties::getPropertyInfo(const QString& propertyName, EntityPr ADD_PROPERTY_TO_MAP(PROP_BILLBOARD_MODE, BillboardMode, billboardMode, BillboardMode); // Particles - ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_MAX_PARTICLES, MaxParticles, maxParticles, quint32, + ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_MAX_PARTICLES, MaxParticles, maxParticles, quint32, particle::MINIMUM_MAX_PARTICLES, particle::MAXIMUM_MAX_PARTICLES); - ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_LIFESPAN, Lifespan, lifespan, float, + ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_LIFESPAN, Lifespan, lifespan, float, particle::MINIMUM_LIFESPAN, particle::MAXIMUM_LIFESPAN); ADD_PROPERTY_TO_MAP(PROP_EMITTING_PARTICLES, IsEmitting, isEmitting, bool); - ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_EMIT_RATE, EmitRate, emitRate, float, + ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_EMIT_RATE, EmitRate, emitRate, float, particle::MINIMUM_EMIT_RATE, particle::MAXIMUM_EMIT_RATE); - ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_EMIT_SPEED, EmitSpeed, emitSpeed, vec3, + ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_EMIT_SPEED, EmitSpeed, emitSpeed, vec3, particle::MINIMUM_EMIT_SPEED, particle::MAXIMUM_EMIT_SPEED); - ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_SPEED_SPREAD, SpeedSpread, speedSpread, vec3, + ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_SPEED_SPREAD, SpeedSpread, speedSpread, vec3, particle::MINIMUM_EMIT_SPEED, particle::MAXIMUM_EMIT_SPEED); ADD_PROPERTY_TO_MAP(PROP_EMIT_ORIENTATION, EmitOrientation, emitOrientation, quat); - ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_EMIT_DIMENSIONS, EmitDimensions, emitDimensions, vec3, + ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_EMIT_DIMENSIONS, EmitDimensions, emitDimensions, vec3, particle::MINIMUM_EMIT_DIMENSION, particle::MAXIMUM_EMIT_DIMENSION); - ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_EMIT_RADIUS_START, EmitRadiusStart, emitRadiusStart, float, + ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_EMIT_RADIUS_START, EmitRadiusStart, emitRadiusStart, float, particle::MINIMUM_EMIT_RADIUS_START, particle::MAXIMUM_EMIT_RADIUS_START); - ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_POLAR_START, EmitPolarStart, polarStart, float, + ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_POLAR_START, EmitPolarStart, polarStart, float, particle::MINIMUM_POLAR, particle::MAXIMUM_POLAR); - ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_POLAR_FINISH, EmitPolarFinish, polarFinish, float, + ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_POLAR_FINISH, EmitPolarFinish, polarFinish, float, particle::MINIMUM_POLAR, particle::MAXIMUM_POLAR); - ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_AZIMUTH_START, EmitAzimuthStart, azimuthStart, float, + ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_AZIMUTH_START, EmitAzimuthStart, azimuthStart, float, particle::MINIMUM_AZIMUTH, particle::MAXIMUM_AZIMUTH); - ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_AZIMUTH_FINISH, EmitAzimuthFinish, azimuthFinish, float, + ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_AZIMUTH_FINISH, EmitAzimuthFinish, azimuthFinish, float, particle::MINIMUM_AZIMUTH, particle::MAXIMUM_AZIMUTH); - ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_EMIT_ACCELERATION, EmitAcceleration, emitAcceleration, vec3, + ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_EMIT_ACCELERATION, EmitAcceleration, emitAcceleration, vec3, particle::MINIMUM_EMIT_ACCELERATION, particle::MAXIMUM_EMIT_ACCELERATION); - ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_ACCELERATION_SPREAD, AccelerationSpread, accelerationSpread, vec3, + ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_ACCELERATION_SPREAD, AccelerationSpread, accelerationSpread, vec3, particle::MINIMUM_ACCELERATION_SPREAD, particle::MAXIMUM_ACCELERATION_SPREAD); - ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_PARTICLE_RADIUS, ParticleRadius, particleRadius, float, + ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_PARTICLE_RADIUS, ParticleRadius, particleRadius, float, particle::MINIMUM_PARTICLE_RADIUS, particle::MAXIMUM_PARTICLE_RADIUS); - ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_RADIUS_SPREAD, RadiusSpread, radiusSpread, float, + ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_RADIUS_SPREAD, RadiusSpread, radiusSpread, float, particle::MINIMUM_PARTICLE_RADIUS, particle::MAXIMUM_PARTICLE_RADIUS); - ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_RADIUS_START, RadiusStart, radiusStart, float, + ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_RADIUS_START, RadiusStart, radiusStart, float, particle::MINIMUM_PARTICLE_RADIUS, particle::MAXIMUM_PARTICLE_RADIUS); - ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_RADIUS_FINISH, RadiusFinish, radiusFinish, float, + ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_RADIUS_FINISH, RadiusFinish, radiusFinish, float, particle::MINIMUM_PARTICLE_RADIUS, particle::MAXIMUM_PARTICLE_RADIUS); ADD_PROPERTY_TO_MAP(PROP_COLOR_SPREAD, ColorSpread, colorSpread, u8vec3Color); ADD_PROPERTY_TO_MAP(PROP_COLOR_START, ColorStart, colorStart, vec3Color); ADD_PROPERTY_TO_MAP(PROP_COLOR_FINISH, ColorFinish, colorFinish, vec3Color); - ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_ALPHA_SPREAD, AlphaSpread, alphaSpread, float, + ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_ALPHA_SPREAD, AlphaSpread, alphaSpread, float, particle::MINIMUM_ALPHA, particle::MAXIMUM_ALPHA); - ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_ALPHA_START, AlphaStart, alphaStart, float, + ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_ALPHA_START, AlphaStart, alphaStart, float, particle::MINIMUM_ALPHA, particle::MAXIMUM_ALPHA); - ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_ALPHA_FINISH, AlphaFinish, alphaFinish, float, + ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_ALPHA_FINISH, AlphaFinish, alphaFinish, float, particle::MINIMUM_ALPHA, particle::MAXIMUM_ALPHA); ADD_PROPERTY_TO_MAP(PROP_EMITTER_SHOULD_TRAIL, EmitterShouldTrail, emitterShouldTrail, bool); - ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_PARTICLE_SPIN, ParticleSpin, particleSpin, float, + ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_PARTICLE_SPIN, ParticleSpin, particleSpin, float, particle::MINIMUM_PARTICLE_SPIN, particle::MAXIMUM_PARTICLE_SPIN); - ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_SPIN_SPREAD, SpinSpread, spinSpread, float, + ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_SPIN_SPREAD, SpinSpread, spinSpread, float, particle::MINIMUM_PARTICLE_SPIN, particle::MAXIMUM_PARTICLE_SPIN); - ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_SPIN_START, SpinStart, spinStart, float, + ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_SPIN_START, SpinStart, spinStart, float, particle::MINIMUM_PARTICLE_SPIN, particle::MAXIMUM_PARTICLE_SPIN); - ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_SPIN_FINISH, SpinFinish, spinFinish, float, + ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_SPIN_FINISH, SpinFinish, spinFinish, float, particle::MINIMUM_PARTICLE_SPIN, particle::MAXIMUM_PARTICLE_SPIN); ADD_PROPERTY_TO_MAP(PROP_PARTICLE_ROTATE_WITH_ENTITY, RotateWithEntity, rotateWithEntity, float); @@ -2790,7 +2790,7 @@ bool EntityItemProperties::getPropertyInfo(const QString& propertyName, EntityPr ADD_PROPERTY_TO_MAP(PROP_IS_SPOTLIGHT, IsSpotlight, isSpotlight, bool); ADD_PROPERTY_TO_MAP(PROP_INTENSITY, Intensity, intensity, float); ADD_PROPERTY_TO_MAP(PROP_EXPONENT, Exponent, exponent, float); - ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_CUTOFF, Cutoff, cutoff, float, + ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_CUTOFF, Cutoff, cutoff, float, LightEntityItem::MIN_CUTOFF, LightEntityItem::MAX_CUTOFF); ADD_PROPERTY_TO_MAP(PROP_FALLOFF_RADIUS, FalloffRadius, falloffRadius, float); @@ -5135,7 +5135,7 @@ bool EntityItemProperties::blobToProperties(QScriptEngine& scriptEngine, const Q return true; } -void EntityItemProperties::propertiesToBlob(QScriptEngine& scriptEngine, const QUuid& myAvatarID, +void EntityItemProperties::propertiesToBlob(QScriptEngine& scriptEngine, const QUuid& myAvatarID, const EntityItemProperties& properties, QByteArray& blob, bool allProperties) { // DANGER: this method is NOT efficient. // begin recipe for extracting unfortunately-formatted-binary-blob from EntityItem From d19c474d65dcd38f615e9e50100948f2d501d961 Mon Sep 17 00:00:00 2001 From: Marcus Llewellyn Date: Sun, 17 May 2020 15:17:26 -0500 Subject: [PATCH 101/160] Rebrand login screens for Vircadia. --- interface/resources/images/vircadia-logo.svg | 23 +++++++++++++++++++ interface/resources/qml/LoginDialog.qml | 2 +- .../qml/LoginDialog/LinkAccountBody.qml | 4 ++-- .../resources/qml/LoginDialog/SignUpBody.qml | 4 ++-- .../qml/LoginDialog/UsernameCollisionBody.qml | 4 ++-- .../qml/dialogs/TabletLoginDialog.qml | 2 +- 6 files changed, 31 insertions(+), 8 deletions(-) create mode 100644 interface/resources/images/vircadia-logo.svg diff --git a/interface/resources/images/vircadia-logo.svg b/interface/resources/images/vircadia-logo.svg new file mode 100644 index 0000000000..b53dd79040 --- /dev/null +++ b/interface/resources/images/vircadia-logo.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/interface/resources/qml/LoginDialog.qml b/interface/resources/qml/LoginDialog.qml index fbc8f9495a..fea0813e14 100644 --- a/interface/resources/qml/LoginDialog.qml +++ b/interface/resources/qml/LoginDialog.qml @@ -85,7 +85,7 @@ FocusScope { Image { id: banner anchors.centerIn: parent - source: "../images/project-athena-banner-color2.svg" + source: "../images/vircadia-logo.svg" horizontalAlignment: Image.AlignHCenter } } diff --git a/interface/resources/qml/LoginDialog/LinkAccountBody.qml b/interface/resources/qml/LoginDialog/LinkAccountBody.qml index 526d1da665..4f0ea2e607 100644 --- a/interface/resources/qml/LoginDialog/LinkAccountBody.qml +++ b/interface/resources/qml/LoginDialog/LinkAccountBody.qml @@ -402,7 +402,7 @@ Item { font.pixelSize: linkAccountBody.textFieldFontSize font.bold: linkAccountBody.fontBold - text: " Can't access your account?" + text: " Can't access your account?" verticalAlignment: Text.AlignVCenter horizontalAlignment: Text.AlignHCenter @@ -527,7 +527,7 @@ Item { leftMargin: hifi.dimensions.contentSpacing.x } - text: "Sign Up" + text: "Sign Up" linkColor: hifi.colors.blueAccent onLinkActivated: { diff --git a/interface/resources/qml/LoginDialog/SignUpBody.qml b/interface/resources/qml/LoginDialog/SignUpBody.qml index 7347464f4e..fcb47c3534 100644 --- a/interface/resources/qml/LoginDialog/SignUpBody.qml +++ b/interface/resources/qml/LoginDialog/SignUpBody.qml @@ -23,7 +23,7 @@ Item { clip: true height: root.height width: root.width - readonly property string termsContainerText: qsTr("By signing up, you agree to Project Athena's Terms of Service") + readonly property string termsContainerText: qsTr("By signing up, you agree to Vircadia's Terms of Service") property int textFieldHeight: 31 property string fontFamily: "Raleway" property int fontSize: 15 @@ -395,7 +395,7 @@ Item { text: signUpBody.termsContainerText Component.onCompleted: { // with the link. - termsText.text = qsTr("By signing up, you agree to Project Athena's Terms of Service") + termsText.text = qsTr("By signing up, you agree to Vircadia's Terms of Service") } } diff --git a/interface/resources/qml/LoginDialog/UsernameCollisionBody.qml b/interface/resources/qml/LoginDialog/UsernameCollisionBody.qml index 8b3c878d46..9710723bed 100644 --- a/interface/resources/qml/LoginDialog/UsernameCollisionBody.qml +++ b/interface/resources/qml/LoginDialog/UsernameCollisionBody.qml @@ -19,7 +19,7 @@ import TabletScriptingInterface 1.0 Item { id: usernameCollisionBody clip: true - readonly property string termsContainerText: qsTr("By creating this user profile, you agree to Project Athena's Terms of Service") + readonly property string termsContainerText: qsTr("By creating this user profile, you agree to Vircadia's Terms of Service") width: root.width height: root.height readonly property string fontFamily: "Raleway" @@ -218,7 +218,7 @@ Item { text: usernameCollisionBody.termsContainerText Component.onCompleted: { // with the link. - termsText.text = qsTr("By creating this user profile, you agree to Project Athena's Terms of Service") + termsText.text = qsTr("By creating this user profile, you agree to Vircadia's Terms of Service") } } diff --git a/interface/resources/qml/dialogs/TabletLoginDialog.qml b/interface/resources/qml/dialogs/TabletLoginDialog.qml index a7e5c236ca..8feeb94462 100644 --- a/interface/resources/qml/dialogs/TabletLoginDialog.qml +++ b/interface/resources/qml/dialogs/TabletLoginDialog.qml @@ -129,7 +129,7 @@ FocusScope { Image { id: banner anchors.centerIn: parent - source: "../../images/project-athena-banner-color2.svg" + source: "../../images/vircadia-logo.svg" horizontalAlignment: Image.AlignHCenter } } From e6505baf9dca57e229d7bb5828cdbabff418a24f Mon Sep 17 00:00:00 2001 From: Marcus Llewellyn Date: Sun, 17 May 2020 15:37:58 -0500 Subject: [PATCH 102/160] Update help dialogs for Vircadia branding. --- .../html/img/tablet-help-gamepad.jpg | Bin 134511 -> 132778 bytes .../html/img/tablet-help-keyboard.jpg | Bin 161890 -> 159335 bytes .../resources/html/img/tablet-help-oculus.jpg | Bin 162456 -> 154242 bytes .../resources/html/img/tablet-help-vive.jpg | Bin 131584 -> 124382 bytes .../html/img/tablet-help-windowsMR.jpg | Bin 136749 -> 135372 bytes interface/resources/html/tabletHelp.html | 8 ++++---- 6 files changed, 4 insertions(+), 4 deletions(-) diff --git a/interface/resources/html/img/tablet-help-gamepad.jpg b/interface/resources/html/img/tablet-help-gamepad.jpg index 3f246e5cc0a063d4c6cd350accc5eca69bfd1d6c..49fd99b141a2f531275fc091df1a548d69b1c60c 100644 GIT binary patch delta 71594 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 delta 73609 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

hu@oBV#bMV_NtR;S61kYcOgKr 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 f1pm`r0kQ*=pi9G(;584mrUC>8lM^zh diff --git a/interface/resources/html/img/tablet-help-keyboard.jpg b/interface/resources/html/img/tablet-help-keyboard.jpg index ec4c0ec60da039c6f96f9e28388a805d6d3bfe07..7e706187f7b44f3848872aa161a2726e14292d2a 100644 GIT binary patch delta 100277 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 delta 102831 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%0D2XgIa(5-o3+(P%GIM`K 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 QhWW?&Vine(=@`rZ0ce&x=>Px# delta 106921 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 diff --git a/interface/resources/html/img/tablet-help-vive.jpg b/interface/resources/html/img/tablet-help-vive.jpg index 75ccf601e22d8ef33bf320d0ffd6171c3b23b590..c9a5e0da7afd262dd3f7fa470d2100e5619c758f 100644 GIT binary patch delta 61524 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�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 delta 69152 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

JJWtSZ@Bgl@}LDMcAQ{b8RBO58YD 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 TyPCu*lkWyA)M)JACbsK;9z`kA delta 77015 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%0D7t;A58dVxlP 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 b=}rY&w@uS-e%n^LJ@Hc5KmkieYS;e&tAnf| diff --git a/interface/resources/html/tabletHelp.html b/interface/resources/html/tabletHelp.html index a414417239..b67b0c4689 100644 --- a/interface/resources/html/tabletHelp.html +++ b/interface/resources/html/tabletHelp.html @@ -77,9 +77,9 @@ var handControllerImageURL = null; var index = 0; var count = 3; - var handControllerRefURL = "https://docs.projectathena.dev/explore/get-started/vr-controls.html#vr-controls"; - var keyboardRefURL = "https://docs.projectathena.dev/explore/get-started/desktop.html#movement-controls"; - var gamepadRefURL = "https://docs.projectathena.dev/explore/get-started/vr-controls.html#gamepad"; + var handControllerRefURL = "https://docs.vircadia.com/explore/get-started/vr-controls.html#vr-controls"; + var keyboardRefURL = "https://docs.vircadia.com/explore/get-started/desktop.html#movement-controls"; + var gamepadRefURL = "https://docs.vircadia.com/explore/get-started/vr-controls.html#gamepad"; function showKbm() { document.getElementById("main_image").setAttribute("src", "img/tablet-help-keyboard.jpg"); @@ -189,7 +189,7 @@ - Report Problem + Report Problem From 335f0c86ddc8c953f4f30ae17de864ecaa8d97e2 Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Sun, 17 May 2020 22:13:57 -0400 Subject: [PATCH 103/160] Reduce scope of PR. --- assignment-client/src/AssignmentClientApp.cpp | 2 +- cmake/ports/hifi-client-deps/CONTROL | 2 +- domain-server/src/DomainServer.cpp | 2 +- libraries/shared/src/SharedUtil.cpp | 2 +- libraries/shared/src/Trace.cpp | 2 +- pkg-scripts/athena-server.spec | 8 ++++---- tools/ac-client/src/ACClientApp.cpp | 2 +- tools/atp-client/src/ATPClientApp.cpp | 2 +- .../linux-package-release/package-and-upload.sh | 10 +++++----- tools/ice-client/src/ICEClientApp.cpp | 2 +- tools/nitpick/CMakeLists.txt | 2 +- tools/oven/src/OvenCLIApplication.cpp | 2 +- tools/oven/src/ui/OvenMainWindow.cpp | 2 +- tools/oven/src/ui/ResultsWindow.cpp | 2 +- tools/skeleton-dump/src/SkeletonDumpApp.cpp | 2 +- tools/udt-test/src/UDTTest.cpp | 2 +- tools/vhacd-util/src/VHACDUtilApp.cpp | 2 +- 17 files changed, 24 insertions(+), 24 deletions(-) diff --git a/assignment-client/src/AssignmentClientApp.cpp b/assignment-client/src/AssignmentClientApp.cpp index 6915f15629..c5b228bd16 100644 --- a/assignment-client/src/AssignmentClientApp.cpp +++ b/assignment-client/src/AssignmentClientApp.cpp @@ -44,7 +44,7 @@ AssignmentClientApp::AssignmentClientApp(int argc, char* argv[]) : // parse command-line QCommandLineParser parser; - parser.setApplicationDescription("Vircadia Assignment Client"); + parser.setApplicationDescription("High Fidelity Assignment Client"); const QCommandLineOption helpOption = parser.addHelpOption(); const QCommandLineOption versionOption = parser.addVersionOption(); diff --git a/cmake/ports/hifi-client-deps/CONTROL b/cmake/ports/hifi-client-deps/CONTROL index 7b94d1ce56..7d4727b364 100644 --- a/cmake/ports/hifi-client-deps/CONTROL +++ b/cmake/ports/hifi-client-deps/CONTROL @@ -1,4 +1,4 @@ Source: hifi-client-deps Version: 0 -Description: Collected dependencies for Vircadia applications +Description: Collected dependencies for High Fidelity applications Build-Depends: hifi-deps, glslang, nlohmann-json, openvr (windows), sdl2 (!android), spirv-cross (!android), spirv-tools (!android), vulkanmemoryallocator diff --git a/domain-server/src/DomainServer.cpp b/domain-server/src/DomainServer.cpp index eff129095c..a9bc24c483 100644 --- a/domain-server/src/DomainServer.cpp +++ b/domain-server/src/DomainServer.cpp @@ -334,7 +334,7 @@ DomainServer::DomainServer(int argc, char* argv[]) : void DomainServer::parseCommandLine(int argc, char* argv[]) { QCommandLineParser parser; - parser.setApplicationDescription("Vircadia Domain Server"); + parser.setApplicationDescription("High Fidelity Domain Server"); const QCommandLineOption versionOption = parser.addVersionOption(); const QCommandLineOption helpOption = parser.addHelpOption(); diff --git a/libraries/shared/src/SharedUtil.cpp b/libraries/shared/src/SharedUtil.cpp index 04217f5aab..f14be72a71 100644 --- a/libraries/shared/src/SharedUtil.cpp +++ b/libraries/shared/src/SharedUtil.cpp @@ -1029,7 +1029,7 @@ bool getProcessorInfo(ProcessorInfo& info) { const QString& getInterfaceSharedMemoryName() { - static const QString applicationName = "Vircadia Interface - " + qgetenv("USERNAME"); + static const QString applicationName = "High Fidelity Interface - " + qgetenv("USERNAME"); return applicationName; } diff --git a/libraries/shared/src/Trace.cpp b/libraries/shared/src/Trace.cpp index bfbe3d7442..e9e77b55ae 100644 --- a/libraries/shared/src/Trace.cpp +++ b/libraries/shared/src/Trace.cpp @@ -167,7 +167,7 @@ void Tracer::serialize(const QString& filename) { QJsonObject { { "traceEvents", traceEvents }, { "otherData", QJsonObject { - { "version", QString { "Vircadia Interface v1.0" } +BuildInfo::VERSION } + { "version", QString { "High Fidelity Interface v1.0" } +BuildInfo::VERSION } } } } }; diff --git a/pkg-scripts/athena-server.spec b/pkg-scripts/athena-server.spec index b4bfe313a9..7910c8114b 100644 --- a/pkg-scripts/athena-server.spec +++ b/pkg-scripts/athena-server.spec @@ -5,10 +5,10 @@ Name: athena-server Version: %{version} Release: 1%{?dist} -Summary: Vircadia metaverse platform, based on the High Fidelity Engine. +Summary: Project Athena metaverse platform, based on the High Fidelity Engine. License: ASL 2.0 -URL: https://vircadia.com +URL: https://projectathena.io Source0: https://github.com/daleglass/athena-builder/blob/master/athena_builder #BuildRequires: systemd-rpm-macros @@ -19,8 +19,8 @@ AutoReq: no AutoProv: no %description -Vircadia allows creation and sharing of VR experiences. - The Vircadia metaverse provides built-in social features, including avatar interactions, spatialized audio and interactive physics. Additionally, you have the ability to import any 3D object into your virtual environment. +Project Athena allows creation and sharing of VR experiences. + The Project Athena metaverse provides built-in social features, including avatar interactions, spatialized audio and interactive physics. Additionally, you have the ability to import any 3D object into your virtual environment. %prep diff --git a/tools/ac-client/src/ACClientApp.cpp b/tools/ac-client/src/ACClientApp.cpp index 2fe5d4c783..3b5db1a1b1 100644 --- a/tools/ac-client/src/ACClientApp.cpp +++ b/tools/ac-client/src/ACClientApp.cpp @@ -29,7 +29,7 @@ ACClientApp::ACClientApp(int argc, char* argv[]) : { // parse command-line QCommandLineParser parser; - parser.setApplicationDescription("Vircadia AC client"); + parser.setApplicationDescription("High Fidelity AC client"); const QCommandLineOption helpOption = parser.addHelpOption(); diff --git a/tools/atp-client/src/ATPClientApp.cpp b/tools/atp-client/src/ATPClientApp.cpp index 4ae5adf29e..09fcf38dff 100644 --- a/tools/atp-client/src/ATPClientApp.cpp +++ b/tools/atp-client/src/ATPClientApp.cpp @@ -36,7 +36,7 @@ ATPClientApp::ATPClientApp(int argc, char* argv[]) : { // parse command-line QCommandLineParser parser; - parser.setApplicationDescription("Vircadia ATP-Client"); + parser.setApplicationDescription("High Fidelity ATP-Client"); const QCommandLineOption helpOption = parser.addHelpOption(); diff --git a/tools/ci-scripts/linux-package-release/package-and-upload.sh b/tools/ci-scripts/linux-package-release/package-and-upload.sh index 9d75a1ebd7..b38434dcc9 100755 --- a/tools/ci-scripts/linux-package-release/package-and-upload.sh +++ b/tools/ci-scripts/linux-package-release/package-and-upload.sh @@ -8,20 +8,20 @@ for package_name in "${packages_systemd[@]}" do SOURCE_DESTINATION_LIST="${WORKSPACE}/build/${package_name}/${package_name}=/usr/share/hifi/${package_name}/ " if [ "$package_name" == "domain-server" ]; then - DESCRIPTION="Vircadia Domain server." + DESCRIPTION="High Fidelity Domain server." SOURCE_DESTINATION_LIST+="${WORKSPACE}/build/${package_name}/resources/=/usr/share/hifi/${package_name}/resources " SOURCE_DESTINATION_LIST+="${WORKSPACE}/build/ext/makefiles/quazip/project/build/libquazip5.so.1.0.0=/usr/share/hifi/${package_name}/libquazip5.so.1" elif [ "$package_name" == "assignment-client" ]; then - DESCRIPTION="Vircadia Assignment clients. Services target a local domain server. Different assignment clients are managed independently with systemd." + DESCRIPTION="High Fidelity Assignment clients. Services target a local domain server. Different assignment clients are managed independently with systemd." SOURCE_DESTINATION_LIST+="${WORKSPACE}/build/${package_name}/plugins/=/usr/share/hifi/${package_name}/plugins " SOURCE_DESTINATION_LIST+="${WORKSPACE}/build/ext/makefiles/quazip/project/build/libquazip5.so.1.0.0=/usr/share/hifi/${package_name}/libquazip5.so.1 " SOURCE_DESTINATION_LIST+="${WORKSPACE}/build/${package_name}/oven=/usr/share/hifi/${package_name}/oven" elif [ "$package_name" == "ice-server" ]; then - DESCRIPTION="Vircadia ICE server." + DESCRIPTION="High Fidelity ICE server." fi - fpm -s dir -t deb -n hifi-${prefix}${package_name} -v ${VERSION} -d hifiqt5.12.3 --vendor "Vircadia" -m "" \ - --url "https://vircadia.com" --license "Apache License 2.0" --description "${DESCRIPTION}" -d libgomp1 -d libtbb2 -d libgl1-mesa-glx -d libnss3 \ + fpm -s dir -t deb -n hifi-${prefix}${package_name} -v ${VERSION} -d hifiqt5.12.3 --vendor "High Fidelity Inc" -m "" \ + --url "https://highfidelity.com" --license "Apache License 2.0" --description "${DESCRIPTION}" -d libgomp1 -d libtbb2 -d libgl1-mesa-glx -d libnss3 \ -d libxi6 -d libxcursor1 -d libxcomposite1 -d libasound2 -d libxtst6 -d libxslt1.1 --template-scripts --template-value "service"="hifi-${package_name}" \ --deb-systemd ${LOCAL_PATH}/hifi-${package_name} --before-install ${LOCAL_PATH}/${package_name}-before-install.sh \ --after-install ${LOCAL_PATH}/after-install.sh --before-remove ${LOCAL_PATH}/before-remove.sh \ diff --git a/tools/ice-client/src/ICEClientApp.cpp b/tools/ice-client/src/ICEClientApp.cpp index 2f98caafd9..0301fad6f4 100644 --- a/tools/ice-client/src/ICEClientApp.cpp +++ b/tools/ice-client/src/ICEClientApp.cpp @@ -24,7 +24,7 @@ ICEClientApp::ICEClientApp(int argc, char* argv[]) : { // parse command-line QCommandLineParser parser; - parser.setApplicationDescription("Vircadia ICE client"); + parser.setApplicationDescription("High Fidelity ICE client"); parser.addHelpOption(); const QCommandLineOption helpOption = parser.addHelpOption(); diff --git a/tools/nitpick/CMakeLists.txt b/tools/nitpick/CMakeLists.txt index e0b5c53c2d..d65505415d 100644 --- a/tools/nitpick/CMakeLists.txt +++ b/tools/nitpick/CMakeLists.txt @@ -72,7 +72,7 @@ elseif (WIN32) set(CONFIGURE_ICON_RC_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/Icon.rc") configure_file("${HF_CMAKE_DIR}/templates/Icon.rc.in" ${CONFIGURE_ICON_RC_OUTPUT}) - set(APP_FULL_NAME "Vircadia Nitpick") + set(APP_FULL_NAME "High Fidelity Nitpick") set(CONFIGURE_VERSION_INFO_RC_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/VersionInfo.rc") configure_file("${HF_CMAKE_DIR}/templates/VersionInfo.rc.in" ${CONFIGURE_VERSION_INFO_RC_OUTPUT}) diff --git a/tools/oven/src/OvenCLIApplication.cpp b/tools/oven/src/OvenCLIApplication.cpp index 44e487c20b..5b0de4d6fa 100644 --- a/tools/oven/src/OvenCLIApplication.cpp +++ b/tools/oven/src/OvenCLIApplication.cpp @@ -42,7 +42,7 @@ void OvenCLIApplication::parseCommandLine(int argc, char* argv[]) { // parse the command line parameters QCommandLineParser parser; - parser.setApplicationDescription("Vircadia Oven"); + parser.setApplicationDescription("High Fidelity Oven"); parser.addOptions({ { 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" }, diff --git a/tools/oven/src/ui/OvenMainWindow.cpp b/tools/oven/src/ui/OvenMainWindow.cpp index 746a1d06a2..59cad3aac5 100644 --- a/tools/oven/src/ui/OvenMainWindow.cpp +++ b/tools/oven/src/ui/OvenMainWindow.cpp @@ -18,7 +18,7 @@ OvenMainWindow::OvenMainWindow(QWidget *parent, Qt::WindowFlags flags) : QMainWindow(parent, flags) { - setWindowTitle("Vircadia Oven"); + setWindowTitle("High Fidelity Oven"); // give the window a fixed width that will never change setFixedWidth(FIXED_WINDOW_WIDTH); diff --git a/tools/oven/src/ui/ResultsWindow.cpp b/tools/oven/src/ui/ResultsWindow.cpp index 95aa0fac16..feb7fbc4f1 100644 --- a/tools/oven/src/ui/ResultsWindow.cpp +++ b/tools/oven/src/ui/ResultsWindow.cpp @@ -23,7 +23,7 @@ ResultsWindow::ResultsWindow(QWidget* parent) : QWidget(parent) { // add a title to this window to identify it - setWindowTitle("Vircadia Oven - Bake Results"); + setWindowTitle("High Fidelity Oven - Bake Results"); // give this dialog the same starting width as the main application window resize(FIXED_WINDOW_WIDTH, size().height()); diff --git a/tools/skeleton-dump/src/SkeletonDumpApp.cpp b/tools/skeleton-dump/src/SkeletonDumpApp.cpp index 14c3cb625c..42a1c78090 100644 --- a/tools/skeleton-dump/src/SkeletonDumpApp.cpp +++ b/tools/skeleton-dump/src/SkeletonDumpApp.cpp @@ -19,7 +19,7 @@ SkeletonDumpApp::SkeletonDumpApp(int argc, char* argv[]) : QCoreApplication(argc // parse command-line QCommandLineParser parser; - parser.setApplicationDescription("Vircadia FBX Skeleton Analyzer"); + parser.setApplicationDescription("High Fidelity FBX Skeleton Analyzer"); const QCommandLineOption helpOption = parser.addHelpOption(); const QCommandLineOption verboseOutput("v", "verbose output"); diff --git a/tools/udt-test/src/UDTTest.cpp b/tools/udt-test/src/UDTTest.cpp index dc22717165..65bf2c7ebd 100644 --- a/tools/udt-test/src/UDTTest.cpp +++ b/tools/udt-test/src/UDTTest.cpp @@ -216,7 +216,7 @@ UDTTest::UDTTest(int& argc, char** argv) : void UDTTest::parseArguments() { // use a QCommandLineParser to setup command line arguments and give helpful output - _argumentParser.setApplicationDescription("Vircadia UDT Protocol Test Client"); + _argumentParser.setApplicationDescription("High Fidelity UDT Protocol Test Client"); _argumentParser.addHelpOption(); const QCommandLineOption helpOption = _argumentParser.addHelpOption(); diff --git a/tools/vhacd-util/src/VHACDUtilApp.cpp b/tools/vhacd-util/src/VHACDUtilApp.cpp index 1ec54f8d2a..3d675f8baf 100644 --- a/tools/vhacd-util/src/VHACDUtilApp.cpp +++ b/tools/vhacd-util/src/VHACDUtilApp.cpp @@ -106,7 +106,7 @@ VHACDUtilApp::VHACDUtilApp(int argc, char* argv[]) : // parse command-line QCommandLineParser parser; - parser.setApplicationDescription("Vircadia Object Decomposer"); + parser.setApplicationDescription("High Fidelity Object Decomposer"); parser.addHelpOption(); const QCommandLineOption helpOption = parser.addHelpOption(); From f908d5bb0af27c43446efa9d315efc1f3099bff2 Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Sun, 17 May 2020 22:20:02 -0400 Subject: [PATCH 104/160] Undo logo change. --- .../resources/images/about-vircadia-logo.png | Bin 54627 -> 0 bytes .../qml/hifi/dialogs/TabletAboutDialog.qml | 6 +++--- 2 files changed, 3 insertions(+), 3 deletions(-) delete mode 100644 interface/resources/images/about-vircadia-logo.png diff --git a/interface/resources/images/about-vircadia-logo.png b/interface/resources/images/about-vircadia-logo.png deleted file mode 100644 index 79d01be595fb9fc2f4b1e73c7fad30b490ec896c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54627 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 Date: Sun, 17 May 2020 22:38:22 -0400 Subject: [PATCH 105/160] Update build docs. --- BUILD.md | 33 ++++++++++++++++++++++++++------- BUILD_WIN.md | 6 +++--- INSTALL.md | 2 +- 3 files changed, 30 insertions(+), 11 deletions(-) diff --git a/BUILD.md b/BUILD.md index f441290c85..594fc973a6 100644 --- a/BUILD.md +++ b/BUILD.md @@ -1,6 +1,6 @@ # General Build Information -*Last Updated on December 21, 2019* +*Last Updated on May 17, 2020* ### OS Specific Build Guides @@ -36,7 +36,7 @@ These are not placed in your normal build tree when doing an out of source build #### CMake -Athena uses CMake to generate build files and project files for your platform. +Vircadia uses CMake to generate build files and project files for your platform. #### Qt CMake will download Qt 5.12.3 using vcpkg. @@ -49,9 +49,9 @@ This can either be entered directly into your shell session before you build or export QT_CMAKE_PREFIX_PATH=/usr/local/Cellar/qt5/5.12.3/lib/cmake export QT_CMAKE_PREFIX_PATH=/usr/local/opt/qt5/lib/cmake -#### Vcpkg +#### VCPKG -Athena uses vcpkg to download and build dependencies. +Vircadia uses vcpkg to download and build dependencies. You do not need to install vcpkg. Building the dependencies can be lengthy and the resulting files will be stored in your OS temp directory. @@ -61,7 +61,26 @@ export HIFI_VCPKG_BASE=/path/to/directory Where /path/to/directory is the path to a directory where you wish the build files to get stored. -#### Generating build files +#### Generating Build Files + +##### Possible Environment Variables + + CMAKE_BACKTRACE_URL + CMAKE_BACKTRACE_TOKEN + + RELEASE_NUMBER + BUILD_NUMBER + + RELEASE_TYPE=PRODUCTION|PR + RELEASE_BUILD=PRODUCTION|PR + + PRODUCTION_BUILD=0|1 + STABLE_BUILD=0|1 + + USE_STABLE_GLOBAL_SERVICES=1 + BUILD_GLOBAL_SERVICES=STABLE + +##### Generate 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. @@ -69,7 +88,7 @@ Create a build directory in the root of your checkout and then run the CMake bui cd build cmake .. -If cmake gives you the same error message repeatedly after the build fails, try removing `CMakeCache.txt`. +If CMake gives you the same error message repeatedly after the build fails, try removing `CMakeCache.txt`. #### Variables @@ -83,7 +102,7 @@ For example, to pass the QT_CMAKE_PREFIX_PATH variable (if not using the vcpkg'e 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). -You can point our [Cmake find modules](cmake/modules/) to the correct version of dependencies by setting one of the three following variables to the location of the correct version of the dependency. +You can point our [CMake find modules](cmake/modules/) to the correct version of dependencies by setting one of the three following variables to the location of the correct version of the dependency. In the examples below the variable $NAME would be replaced by the name of the dependency in uppercase, and $name would be replaced by the name of the dependency in lowercase (ex: OPENSSL_ROOT_DIR, openssl). diff --git a/BUILD_WIN.md b/BUILD_WIN.md index 098553c761..0c4c0d3d25 100644 --- a/BUILD_WIN.md +++ b/BUILD_WIN.md @@ -1,6 +1,6 @@ # Build Windows -*Last Updated on April 7, 2020* +*Last Updated on May 17, 2020* This is a stand-alone guide for creating your first Vircadia build for Windows 64-bit. @@ -82,7 +82,7 @@ Where `%VIRCADIA_DIR%` is the directory for the Vircadia repository. ### Step 6. Making a Build -Open `%VIRCADIA_DIR%\build\athena.sln` using Visual Studio. +Open `%VIRCADIA_DIR%\build\vircadia.sln` using Visual Studio. Change the Solution Configuration (menu ribbon under the menu bar, next to the green play button) from "Debug" to "Release" for best performance. @@ -116,4 +116,4 @@ Remove `CMakeCache.txt` found in the `%VIRCADIA_DIR%\build` directory. #### CMake can't find OpenSSL -Remove `CMakeCache.txt` found in the `%VIRCADIA_DIR%\build` directory. Verify that your HIFI_VCPKG_BASE environment variable is set and pointing to the correct location. Verify that the file `${HIFI_VCPKG_BASE}/installed/x64-windows/include/openssl/ssl.h` exists. +Remove `CMakeCache.txt` found in the `%VIRCADIA_DIR%\build` directory. Verify that your HIFI_VCPKG_BASE environment variable is set and pointing to the correct location. Verify that the file `${HIFI_VCPKG_BASE}/installed/x64-windows/include/openssl/ssl.h` exists. diff --git a/INSTALL.md b/INSTALL.md index 10858200e7..fff8112607 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -60,7 +60,7 @@ To produce an executable installer on Windows, the following are required: 1. Install version 10.15.0 LTS 1. Perform a clean cmake from a new terminal. -1. Open the `athena.sln` solution and select the Release configuration. +1. Open the `vircadia.sln` solution and select the Release configuration. 1. Build the solution. 1. Build `packaged-server-console-npm-install` (found under **hidden/Server Console**) 1. Build `packaged-server-console` (found under **Server Console**) From eb1bf12494251cf2254c0f711deaa95a014a1f6c Mon Sep 17 00:00:00 2001 From: Thijs Wenker Date: Mon, 18 May 2020 12:57:30 +0200 Subject: [PATCH 106/160] Fix linux PR builds --- .github/workflows/pr_build.yml | 2 +- cmake/macros/TargetPython.cmake | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pr_build.yml b/.github/workflows/pr_build.yml index 4b3d66da50..02024a82ee 100644 --- a/.github/workflows/pr_build.yml +++ b/.github/workflows/pr_build.yml @@ -51,7 +51,7 @@ jobs: echo ::set-env name=PYTHON_EXEC::python3 echo ::set-env name=INSTALLER_EXT::* echo ::set-env name=CMAKE_BUILD_EXTRA::"-- -j3" - echo ::set-env name=CMAKE_EXTRA::"-DBUILD_TOOLS:BOOLEAN=FALSE" + echo ::set-env name=CMAKE_EXTRA::"-DBUILD_TOOLS:BOOLEAN=FALSE -DHIFI_PYTHON_EXEC:FILEPATH=$(which python3)" fi # Mac build variables if [ "${{ matrix.os }}" = "macOS-latest" ]; then diff --git a/cmake/macros/TargetPython.cmake b/cmake/macros/TargetPython.cmake index 2c055cf8bc..c9089c17bd 100644 --- a/cmake/macros/TargetPython.cmake +++ b/cmake/macros/TargetPython.cmake @@ -19,4 +19,5 @@ macro(TARGET_PYTHON) message(FATAL_ERROR "Unable to locate Python interpreter 3.5 or higher") endif() endif() -endmacro() \ No newline at end of file + message("Using the Python interpreter located at: " ${HIFI_PYTHON_EXEC}) +endmacro() From 44933f0cc790c9b592d7bfbfcd3b63494a6f63a7 Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Mon, 18 May 2020 15:17:40 -0400 Subject: [PATCH 107/160] Update CONTRIBUTING.md and README.md --- CONTRIBUTING.md | 4 ++-- README.md | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a62e4b2825..f3ab85351a 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -21,7 +21,7 @@ Contributing ``` git remote add upstream https://github.com/kasenvr/project-athena - git pull upstream kasen/core + git pull upstream master ``` Resolve any conflicts that arise with this step. @@ -29,7 +29,7 @@ Contributing 7. Push to your fork ``` - git push origin kasen/core + git push origin master ``` 8. Submit a pull request diff --git a/README.md b/README.md index f61a60d431..e57063b499 100644 --- a/README.md +++ b/README.md @@ -12,11 +12,11 @@ Vircadia is a 3D social software project seeking to incrementally bring about a ### How to build the Interface -[For Windows](https://github.com/kasenvr/project-athena/blob/kasen/core/BUILD_WIN.md) +[For Windows](https://github.com/kasenvr/project-athena/blob/master/BUILD_WIN.md) -[For Linux](https://github.com/kasenvr/project-athena/blob/kasen/core/BUILD_LINUX.md) +[For Linux](https://github.com/kasenvr/project-athena/blob/master/BUILD_LINUX.md) -[For Linux - Athena Builder](https://github.com/daleglass/athena-builder) +[For Linux - Athena Builder](https://github.com/kasenvr/vircadia-builder) ### How to deploy a Server @@ -24,7 +24,7 @@ Vircadia is a 3D social software project seeking to incrementally bring about a ### How to build a Server -[For Linux - Athena Builder](https://github.com/daleglass/athena-builder) +[For Linux - Athena Builder](https://github.com/kasenvr/vircadia-builder) ### Boot to Metaverse: The Goal From 3a0c4e1477d10f7cd41fc41cf48e73d7dfbc3620 Mon Sep 17 00:00:00 2001 From: Alezia Kurdis <60075796+AleziaKurdis@users.noreply.github.com> Date: Mon, 18 May 2020 23:48:02 -0400 Subject: [PATCH 108/160] Zones Selector sorted by zone names This change makes the Zones Selector sorted by zone names. To address issue: renderWithZones: zone list incorrectly sorted. #354 (But this doesn't fix the problem with the scrolling) --- scripts/system/create/edit.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/scripts/system/create/edit.js b/scripts/system/create/edit.js index 969b03e795..2e4bb44242 100644 --- a/scripts/system/create/edit.js +++ b/scripts/system/create/edit.js @@ -2905,7 +2905,19 @@ function getExistingZoneList() { }; listExistingZones.push(thisZone); } + listExistingZones.sort(GetSortOrder("name")); return listExistingZones; } +function GetSortOrder(sortProperty) { + return function(a, b) { + if (a[sortProperty] > b[sortProperty]) { + return 1; + } else if (a[sortProperty] < b[sortProperty]) { + return -1; + } + return 0; + } +} + }()); // END LOCAL_SCOPE From 8d9ad0aed4ad18bfb9a927717267be3104cfb014 Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Tue, 19 May 2020 18:22:20 -0400 Subject: [PATCH 109/160] Update More App to latest revision. More app now links to cdn.vircadia.com and also has a developer mode. --- scripts/system/more/app-more.js | 13 ++++--- scripts/system/more/jquery-3.5.1.min.js | 2 + scripts/system/more/more.html | 51 ++++++++++++------------- 3 files changed, 34 insertions(+), 32 deletions(-) create mode 100644 scripts/system/more/jquery-3.5.1.min.js diff --git a/scripts/system/more/app-more.js b/scripts/system/more/app-more.js index 1902ddf855..a5249bb2b3 100644 --- a/scripts/system/more/app-more.js +++ b/scripts/system/more/app-more.js @@ -11,12 +11,12 @@ // // 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 ROOT = Script.resolvePath('').split("app-more.js")[0]; + var DEV_PARAMETER = Script.resolvePath('').split("?")[1]; var APP_NAME = "MORE..."; - var APP_URL = ROOT + "more.html"; + var APP_URL = (ROOT + "more.html" + (DEV_PARAMETER === "dev" ? "?dev" : "")).replace(/%5C/g, "/"); var APP_ICON_INACTIVE = ROOT + "appicon_i.png"; var APP_ICON_ACTIVE = ROOT + "appicon_a.png"; var appStatus = false; @@ -31,7 +31,7 @@ text: APP_NAME, icon: APP_ICON_INACTIVE, activeIcon: APP_ICON_ACTIVE - }); + }); function clicked() { if (appStatus) { @@ -56,7 +56,7 @@ var runningScriptJson; for (var j = 0; j < currentlyRunningScripts.length; j++) { runningScriptJson = currentlyRunningScripts[j].url; - if (runningScriptJson.indexOf("https://kasenvr.github.io/community-apps/applications") !== -1) { + if (runningScriptJson.indexOf("https://cdn.vircadia.com/community-apps/applications") !== -1) { newMessage += "_" + runningScriptJson; } } @@ -69,7 +69,8 @@ if (instruction.action === "installScript") { if (lastProcessing.action !== instruction.action || lastProcessing.script !== instruction.script) { - ScriptDiscoveryService.loadScript(instruction.script, true, false, false, true, false); // Force reload the script, do not use cache. lastProcessing.action = instruction.action; + ScriptDiscoveryService.loadScript(instruction.script, true, false, false, true, false); // Force reload the script, do not use cache. + lastProcessing.action = instruction.action; lastProcessing.script = instruction.script; Script.setTimeout(function() { sendRunningScriptList(); diff --git a/scripts/system/more/jquery-3.5.1.min.js b/scripts/system/more/jquery-3.5.1.min.js new file mode 100644 index 0000000000..b0614034ad --- /dev/null +++ b/scripts/system/more/jquery-3.5.1.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.5.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"

CameraIndependentnumbernumberThe camera is in independent mode.
CameraEntitynumbernumberThe camera is in entity mode.
InHMDnumbernumberThe user is in HMD mode.
AdvancedMovementnumbernumberAdvanced movement (walking) controls are + *
AdvancedMovementnumbernumberAdvanced movement (walking) controls are * enabled.
StrafeEnablednumbernumberStrafing is enabled
LeftHandDominantnumbernumberDominant hand set to left.
Color a sphere using a Material entity.Rez a Vive tracker puck.Create a ball of green smoke.Draw a textured "V".Create a textured PolyVox sphere.Create a Web entity displaying at 1920 x 1080 resolution.
","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0 - + From e990e2d5bf711f018399be1feee9654df0e0492b Mon Sep 17 00:00:00 2001 From: kasenvr <52365539+kasenvr@users.noreply.github.com> Date: Wed, 20 May 2020 15:00:28 -0400 Subject: [PATCH 110/160] Update README_hifi.md Co-authored-by: David Rowe --- README_hifi.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README_hifi.md b/README_hifi.md index 004b43b706..325cba8d42 100644 --- a/README_hifi.md +++ b/README_hifi.md @@ -1,4 +1,4 @@ -# THIS IS AN OUTDATED DOCUMENT. +# THIS DOCUMENT IS OUTDATED High Fidelity (hifi) is an early-stage technology lab experimenting with Virtual Worlds and VR. From ce1a1faf79daeddabdeb3e86080740c30ef38c3f Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Wed, 20 May 2020 15:02:03 -0400 Subject: [PATCH 111/160] Fix copyright headers + some docs. --- BUILD_WIN.md | 2 +- CODING_STANDARD.md | 6 +++--- CONTRIBUTING.md | 2 +- INSTALL.md | 4 ++-- LICENSE | 2 +- interface/resources/qml/hifi/dialogs/TabletAboutDialog.qml | 2 +- scripts/system/create/edit.js | 2 +- .../create/entityProperties/html/js/entityProperties.js | 2 +- scripts/system/html/css/edit-style.css | 2 +- unpublishedScripts/marketplace/record/html/record.html | 2 +- 10 files changed, 13 insertions(+), 13 deletions(-) diff --git a/BUILD_WIN.md b/BUILD_WIN.md index 0c4c0d3d25..c057d9ca5d 100644 --- a/BUILD_WIN.md +++ b/BUILD_WIN.md @@ -47,7 +47,7 @@ Download and install the latest version of CMake 3.15. Download the file named win64-x64 Installer from the [CMake Website](https://cmake.org/download/). You can access the installer on this [3.15 Version page](https://cmake.org/files/v3.15/). During installation, make sure to check "Add CMake to system PATH for all users" when prompted. ### Step 4. Create VCPKG environment variable -In the next step, you will use CMake to build Project Athena. By default, the CMake process builds dependency files in Windows' `%TEMP%` directory, which is periodically cleared by the operating system. To prevent you from having to re-build the dependencies in the event that Windows clears that directory, we recommend that you create a `HIFI_VCPKG_BASE` environment variable linked to a directory somewhere on your machine. That directory will contain all dependency files until you manually remove them. +In the next step, you will use CMake to build Vircadia. By default, the CMake process builds dependency files in Windows' `%TEMP%` directory, which is periodically cleared by the operating system. To prevent you from having to re-build the dependencies in the event that Windows clears that directory, we recommend that you create a `HIFI_VCPKG_BASE` environment variable linked to a directory somewhere on your machine. That directory will contain all dependency files until you manually remove them. To create this variable: * Naviagte to 'Edit the System Environment Variables' Through the start menu. diff --git a/CODING_STANDARD.md b/CODING_STANDARD.md index fd1843e981..63f24b5358 100644 --- a/CODING_STANDARD.md +++ b/CODING_STANDARD.md @@ -976,9 +976,9 @@ while (true) { #### [4.3.4] Source files (header and implementation) must include a boilerplate. -Boilerplates should include the filename, location, creator, copyright Project Athena contributors, and Apache 2.0 License +Boilerplates should include the filename, location, creator, copyright Vircadia contributors, and Apache 2.0 License information. This should be placed at the top of the file. If editing an existing file that is copyright High Fidelity, add a -second copyright line, copyright Project Athena contributors. +second copyright line, copyright Vircadia. ```cpp // @@ -987,7 +987,7 @@ second copyright line, copyright Project Athena contributors. // // Created by Stephen Birarda on 15 Feb 2013. // Copyright 2013 High Fidelity, Inc. -// Copyright 2020 Project Athena contributors. +// Copyright 2020 Vircadia // // This is where you could place an optional one line comment about the file. // diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f3ab85351a..aeb6f49280 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -29,7 +29,7 @@ Contributing 7. Push to your fork ``` - git push origin master + git push origin new_branch_name ``` 8. Submit a pull request diff --git a/INSTALL.md b/INSTALL.md index fff8112607..92a2ee0184 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -1,10 +1,10 @@ # Creating an Installer -Follow the [build guide](BUILD.md) to figure out how to build Project Athena for your platform. +Follow the [build guide](BUILD.md) to figure out how to build Vircadia for your platform. During generation, CMake should produce an `install` target and a `package` target. -The `install` target will copy the Project Athena targets and their dependencies to your `CMAKE_INSTALL_PREFIX`. +The `install` target will copy the Vircadia targets and their dependencies to your `CMAKE_INSTALL_PREFIX`. This variable is set by the `project(hifi)` command in `CMakeLists.txt` to `C:/Program Files/hifi` and stored in `build/CMakeCache.txt` ### Packaging diff --git a/LICENSE b/LICENSE index ab1ea16d6a..736e1d5ac5 100644 --- a/LICENSE +++ b/LICENSE @@ -1,5 +1,5 @@ Copyright (c) 2013-2019, High Fidelity, Inc. -Copyright (c) 2019-2020, Project Athena Contributors. +Copyright (c) 2019-2020, Vircadia All rights reserved. https://vircadia.com diff --git a/interface/resources/qml/hifi/dialogs/TabletAboutDialog.qml b/interface/resources/qml/hifi/dialogs/TabletAboutDialog.qml index 4214b956d8..d523fccccc 100644 --- a/interface/resources/qml/hifi/dialogs/TabletAboutDialog.qml +++ b/interface/resources/qml/hifi/dialogs/TabletAboutDialog.qml @@ -116,7 +116,7 @@ Rectangle { Item { height: 20; width: 1 } RalewayRegular { color: "white" - text: "© 2020 Vircadia." + text: "© 2020 Vircadia" size: 14 } RalewayRegular { diff --git a/scripts/system/create/edit.js b/scripts/system/create/edit.js index b728c8348f..d0cb6968e1 100644 --- a/scripts/system/create/edit.js +++ b/scripts/system/create/edit.js @@ -3,7 +3,7 @@ // Created by Brad Hefta-Gaub on 10/2/14. // Persist toolbar by HRS 6/11/15. // Copyright 2014 High Fidelity, Inc. -// Copyright 2020 Vircadia contributors. +// Copyright 2020 Vircadia // // This script allows you to edit entities with a new UI/UX for mouse and trackpad based editing // diff --git a/scripts/system/create/entityProperties/html/js/entityProperties.js b/scripts/system/create/entityProperties/html/js/entityProperties.js index 182dddf817..88bb36bbf5 100644 --- a/scripts/system/create/entityProperties/html/js/entityProperties.js +++ b/scripts/system/create/entityProperties/html/js/entityProperties.js @@ -2,7 +2,7 @@ // // Created by Ryan Huffman on 13 Nov 2014 // Copyright 2014 High Fidelity, Inc. -// Copyright 2020 Vircadia contributors. +// Copyright 2020 Vircadia // // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html diff --git a/scripts/system/html/css/edit-style.css b/scripts/system/html/css/edit-style.css index c72456d414..6443547ee3 100644 --- a/scripts/system/html/css/edit-style.css +++ b/scripts/system/html/css/edit-style.css @@ -3,7 +3,7 @@ // // Created by Ryan Huffman on 13 Nov 2014 // Copyright 2014 High Fidelity, Inc. -// Copyright 2020 Vircadia contributors. +// Copyright 2020 Vircadia // // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html diff --git a/unpublishedScripts/marketplace/record/html/record.html b/unpublishedScripts/marketplace/record/html/record.html index 810238a580..899a3ade57 100644 --- a/unpublishedScripts/marketplace/record/html/record.html +++ b/unpublishedScripts/marketplace/record/html/record.html @@ -3,7 +3,7 @@ // // Created by David Rowe on 5 Apr 2017. // Copyright 2017 High Fidelity, Inc. -// Copyright 2020 Vircadia contributors. +// Copyright 2020 Vircadia // // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html From c9f6f866196ea84f8b8ae98f73091a3dd2d17f52 Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Wed, 20 May 2020 15:08:18 -0400 Subject: [PATCH 112/160] Add descriptions, some still are TODO. --- BUILD.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/BUILD.md b/BUILD.md index 1b13eff614..b30160e7e4 100644 --- a/BUILD.md +++ b/BUILD.md @@ -22,7 +22,7 @@ These dependencies need not be installed manually. They are automatically downlo - [Bullet Physics Engine](https://github.com/bulletphysics/bullet3/releases): 2.83 - [glm](https://glm.g-truc.net/0.9.8/index.html): 0.9.8 - [Oculus SDK](https://developer.oculus.com/downloads/): 1.11 (Win32) / 0.5 (Mac) -- [OpenVR](https://github.com/ValveSoftware/openvr): 1.0.6 (Win32 only) +- [OpenVR](https://github.com/ValveSoftware/openvr): 1.11.11 (Win32 only) - [Polyvox](http://www.volumesoffun.com/): 0.2.1 - [QuaZip](https://sourceforge.net/projects/quazip/files/quazip/): 0.7.3 - [SDL2](https://www.libsdl.org/download-2.0.php): 2.0.3 @@ -67,18 +67,25 @@ Where /path/to/directory is the path to a directory where you wish the build fil ##### Possible Environment Variables + // The URL to post the dump to. CMAKE_BACKTRACE_URL + // The identifying tag of the release. CMAKE_BACKTRACE_TOKEN + // The release version. RELEASE_NUMBER + // The build commit. BUILD_NUMBER + // The type of release. RELEASE_TYPE=PRODUCTION|PR RELEASE_BUILD=PRODUCTION|PR + // TODO: What do these do? PRODUCTION_BUILD=0|1 STABLE_BUILD=0|1 + // TODO: What do these do? USE_STABLE_GLOBAL_SERVICES=1 BUILD_GLOBAL_SERVICES=STABLE From 3023924cf1d06ee9694ef3b8f54b9463db0f9b08 Mon Sep 17 00:00:00 2001 From: Alezia Kurdis <60075796+AleziaKurdis@users.noreply.github.com> Date: Wed, 20 May 2020 16:11:48 -0400 Subject: [PATCH 113/160] Minor code adjustments Minor code adjustments --- scripts/system/create/edit.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/scripts/system/create/edit.js b/scripts/system/create/edit.js index 2e4bb44242..c255ada389 100644 --- a/scripts/system/create/edit.js +++ b/scripts/system/create/edit.js @@ -2905,11 +2905,13 @@ function getExistingZoneList() { }; listExistingZones.push(thisZone); } - listExistingZones.sort(GetSortOrder("name")); + var zoneSortProperty = "name"; + var zoneSortOrder = getSortOrder(zoneSortProperty); + listExistingZones.sort(zoneSortOrder); return listExistingZones; } -function GetSortOrder(sortProperty) { +function getSortOrder(sortProperty) { return function(a, b) { if (a[sortProperty] > b[sortProperty]) { return 1; From e6d092aefe9b6dae71fde85f4ce7f83ee9595df7 Mon Sep 17 00:00:00 2001 From: Alezia Kurdis <60075796+AleziaKurdis@users.noreply.github.com> Date: Thu, 21 May 2020 22:13:33 -0400 Subject: [PATCH 114/160] Code Adjustment Code Adjustment { ... listExistingZones.sort(zoneSortOrder()); return listExistingZones; } function zoneSortOrder() { return function(a, b) { if (a.name > b.name) { return 1; } else if (a.name < b.name) { return -1; } return 0; } } --- scripts/system/create/edit.js | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/scripts/system/create/edit.js b/scripts/system/create/edit.js index c255ada389..1d8c0e75b9 100644 --- a/scripts/system/create/edit.js +++ b/scripts/system/create/edit.js @@ -2905,17 +2905,15 @@ function getExistingZoneList() { }; listExistingZones.push(thisZone); } - var zoneSortProperty = "name"; - var zoneSortOrder = getSortOrder(zoneSortProperty); - listExistingZones.sort(zoneSortOrder); + listExistingZones.sort(zoneSortOrder()); return listExistingZones; } -function getSortOrder(sortProperty) { +function zoneSortOrder() { return function(a, b) { - if (a[sortProperty] > b[sortProperty]) { + if (a.name > b.name) { return 1; - } else if (a[sortProperty] < b[sortProperty]) { + } else if (a.name < b.name) { return -1; } return 0; From b7393b2398b6d3086634735709a38eaca8838d51 Mon Sep 17 00:00:00 2001 From: Alezia Kurdis <60075796+AleziaKurdis@users.noreply.github.com> Date: Sat, 23 May 2020 22:54:45 -0400 Subject: [PATCH 115/160] Make the zones sort as case insensitive Make the sort of the zone selector to be case insensitive. --- scripts/system/create/edit.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/scripts/system/create/edit.js b/scripts/system/create/edit.js index 1d8c0e75b9..20927d9c3d 100644 --- a/scripts/system/create/edit.js +++ b/scripts/system/create/edit.js @@ -2911,9 +2911,11 @@ function getExistingZoneList() { function zoneSortOrder() { return function(a, b) { - if (a.name > b.name) { + var nameA = a.name.toUpperCase(); + var nameB = b.name.toUpperCase(); + if (nameA > nameB) { return 1; - } else if (a.name < b.name) { + } else if (nameA < nameB) { return -1; } return 0; From 942fee25efa2ea462502859838400b2a5b233ac6 Mon Sep 17 00:00:00 2001 From: kasenvr <52365539+kasenvr@users.noreply.github.com> Date: Sun, 24 May 2020 01:10:12 -0400 Subject: [PATCH 116/160] Update INSTALL.md Adds missing steps, fixes old ones, offers insight into a potential problem. --- INSTALL.md | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/INSTALL.md b/INSTALL.md index 10858200e7..bbaaafd6ef 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -1,10 +1,10 @@ # Creating an Installer -Follow the [build guide](BUILD.md) to figure out how to build Project Athena for your platform. +Follow the [build guide](BUILD.md) to figure out how to build Vircadia for your platform. During generation, CMake should produce an `install` target and a `package` target. -The `install` target will copy the Project Athena targets and their dependencies to your `CMAKE_INSTALL_PREFIX`. +The `install` target will copy the Vircadia targets and their dependencies to your `CMAKE_INSTALL_PREFIX`. This variable is set by the `project(hifi)` command in `CMakeLists.txt` to `C:/Program Files/hifi` and stored in `build/CMakeCache.txt` ### Packaging @@ -15,7 +15,7 @@ To produce an installer, run the `package` target. To produce an executable installer on Windows, the following are required: -1. [7-zip]() +1. [7-zip]() 1. [Nullsoft Scriptable Install System](http://nsis.sourceforge.net/Download) - 3.04 Install using defaults (will install to `C:\Program Files (x86)\NSIS`) @@ -56,22 +56,23 @@ To produce an executable installer on Windows, the following are required: 1. Copy `Release\ApplicationID.dll` to `C:\Program Files (x86)\NSIS\Plugins\x86-ansi\` 1. Copy `ReleaseUnicode\ApplicationID.dll` to `C:\Program Files (x86)\NSIS\Plugins\x86-unicode\` -1. [npm]() +1. [Node.JS and NPM]() 1. Install version 10.15.0 LTS 1. Perform a clean cmake from a new terminal. -1. Open the `athena.sln` solution and select the Release configuration. +1. Open the `vircadia.sln` solution with elevated (administrator) permissions on Visual Studio and select the **Release** configuration. 1. Build the solution. +1. Build CMakeTargets->INSTALL 1. Build `packaged-server-console-npm-install` (found under **hidden/Server Console**) 1. Build `packaged-server-console` (found under **Server Console**) This will add 2 folders to `build\server-console\` - `server-console-win32-x64` and `x64` -1. Build CMakeTargets->PACKAGE - Installer is now available in `build\_CPack_Packages\win64\NSIS` +1. Build CMakeTargets->PACKAGE + The installer is now available in `build\_CPack_Packages\win64\NSIS` #### OS X 1. [npm]() - Install version 10.15.0 LTS + Install version 12.16.3 LTS 1. Perform a clean CMake. 1. Perform a Release build of ALL_BUILD @@ -80,3 +81,9 @@ To produce an executable installer on Windows, the following are required: Sandbox-darwin-x64 1. Perform a Release build of `package` Installer is now available in `build/_CPack_Packages/Darwin/DragNDrop + +### FAQ + +1. **Problem:** Failure to open a file. ```File: failed opening file "\FOLDERSHARE\XYZSRelease\...\Credits.rtf" Error in script "C:\TFS\XYZProject\Releases\NullsoftInstaller\XYZWin7Installer.nsi" on line 77 -- aborting creation process``` + 1. **Cause:** The complete path (current directory + relative path) has to be < 260 characters to any of the relevant files. + 1. **Solution:** Move your build and packaging folder as high up in the drive as possible to prevent an overage. From a4bf1c4d82c0b640e691eed7afe3fec605c42cd2 Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Mon, 25 May 2020 15:59:43 -0400 Subject: [PATCH 117/160] Update copyright headers. --- CODING_STANDARD.md | 2 +- interface/resources/qml/hifi/dialogs/TabletAboutDialog.qml | 4 ++-- libraries/render-utils/src/CullFace.slh | 2 +- scripts/system/create/edit.js | 2 +- .../system/create/entityProperties/html/entityProperties.html | 2 +- .../create/entityProperties/html/js/entityProperties.js | 2 +- scripts/system/html/css/edit-style.css | 2 +- scripts/system/html/css/tabs.css | 2 +- scripts/system/more/app-more.js | 2 +- scripts/system/more/css/styles.css | 2 +- scripts/system/more/more.html | 2 +- scripts/system/tablet-goto.js | 2 +- unpublishedScripts/marketplace/record/html/record.html | 2 +- 13 files changed, 14 insertions(+), 14 deletions(-) diff --git a/CODING_STANDARD.md b/CODING_STANDARD.md index 63f24b5358..8900059665 100644 --- a/CODING_STANDARD.md +++ b/CODING_STANDARD.md @@ -987,7 +987,7 @@ second copyright line, copyright Vircadia. // // Created by Stephen Birarda on 15 Feb 2013. // Copyright 2013 High Fidelity, Inc. -// Copyright 2020 Vircadia +// Copyright 2020 Vircadia contributors // // This is where you could place an optional one line comment about the file. // diff --git a/interface/resources/qml/hifi/dialogs/TabletAboutDialog.qml b/interface/resources/qml/hifi/dialogs/TabletAboutDialog.qml index d523fccccc..979eaa7324 100644 --- a/interface/resources/qml/hifi/dialogs/TabletAboutDialog.qml +++ b/interface/resources/qml/hifi/dialogs/TabletAboutDialog.qml @@ -116,12 +116,12 @@ Rectangle { Item { height: 20; width: 1 } RalewayRegular { color: "white" - text: "© 2020 Vircadia" + text: "© 2020 Vircadia contributors" size: 14 } RalewayRegular { color: "white" - text: "© 2019 - 2020 Project Athena Contributors." + text: "© 2019 - 2020 Vircadia contributors." size: 14 } RalewayRegular { diff --git a/libraries/render-utils/src/CullFace.slh b/libraries/render-utils/src/CullFace.slh index 61b76bb22f..d1041ae817 100644 --- a/libraries/render-utils/src/CullFace.slh +++ b/libraries/render-utils/src/CullFace.slh @@ -3,7 +3,7 @@ // libraries/render-utils/src // // Created by HifiExperiments on 4/16/2020. -// Copyright 2020 Vircadia +// Copyright 2020 Vircadia contributors // // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html diff --git a/scripts/system/create/edit.js b/scripts/system/create/edit.js index d0cb6968e1..bf0bd77efd 100644 --- a/scripts/system/create/edit.js +++ b/scripts/system/create/edit.js @@ -3,7 +3,7 @@ // Created by Brad Hefta-Gaub on 10/2/14. // Persist toolbar by HRS 6/11/15. // Copyright 2014 High Fidelity, Inc. -// Copyright 2020 Vircadia +// Copyright 2020 Vircadia contributors // // This script allows you to edit entities with a new UI/UX for mouse and trackpad based editing // diff --git a/scripts/system/create/entityProperties/html/entityProperties.html b/scripts/system/create/entityProperties/html/entityProperties.html index 6eadf4d3c0..eef1c33829 100644 --- a/scripts/system/create/entityProperties/html/entityProperties.html +++ b/scripts/system/create/entityProperties/html/entityProperties.html @@ -4,7 +4,7 @@ // // Created by Ryan Huffman on 13 Nov 2014 // Copyright 2014 High Fidelity, Inc. -// Copyright 2020 Project Athena contributors. +// Copyright 2020 Vircadia contributors. // // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html diff --git a/scripts/system/create/entityProperties/html/js/entityProperties.js b/scripts/system/create/entityProperties/html/js/entityProperties.js index 88bb36bbf5..736c37abc8 100644 --- a/scripts/system/create/entityProperties/html/js/entityProperties.js +++ b/scripts/system/create/entityProperties/html/js/entityProperties.js @@ -2,7 +2,7 @@ // // Created by Ryan Huffman on 13 Nov 2014 // Copyright 2014 High Fidelity, Inc. -// Copyright 2020 Vircadia +// Copyright 2020 Vircadia contributors // // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html diff --git a/scripts/system/html/css/edit-style.css b/scripts/system/html/css/edit-style.css index 6443547ee3..e92344daa7 100644 --- a/scripts/system/html/css/edit-style.css +++ b/scripts/system/html/css/edit-style.css @@ -3,7 +3,7 @@ // // Created by Ryan Huffman on 13 Nov 2014 // Copyright 2014 High Fidelity, Inc. -// Copyright 2020 Vircadia +// Copyright 2020 Vircadia contributors // // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html diff --git a/scripts/system/html/css/tabs.css b/scripts/system/html/css/tabs.css index b2d63b5652..6abd910300 100644 --- a/scripts/system/html/css/tabs.css +++ b/scripts/system/html/css/tabs.css @@ -2,7 +2,7 @@ // tabs.css // // Created by Alezia Kurdis on 27 Feb 2020 -// Copyright 2020 Project Athena contributors. +// Copyright 2020 Vircadia contributors. // // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html diff --git a/scripts/system/more/app-more.js b/scripts/system/more/app-more.js index 1902ddf855..c4aabefe9c 100644 --- a/scripts/system/more/app-more.js +++ b/scripts/system/more/app-more.js @@ -4,7 +4,7 @@ // VERSION 1.0 // // Created by Keb Helion, February 2020. -// Copyright 2020 Project Athena and contributors. +// Copyright 2020 Vircadia contributors // // This script adds a "More Apps" selector to "Project Athena" to allow the user to add optional functionalities to the tablet. // This application has been designed to work directly from the Github repository. diff --git a/scripts/system/more/css/styles.css b/scripts/system/more/css/styles.css index 1f9aba0695..1772d56775 100644 --- a/scripts/system/more/css/styles.css +++ b/scripts/system/more/css/styles.css @@ -2,7 +2,7 @@ styles.css Created by Kalila L. on 23 Feb 2020. - Copyright 2020 Project Athena and contributors. + Copyright 2020 Vircadia contributors Distributed under the Apache License, Version 2.0. See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html diff --git a/scripts/system/more/more.html b/scripts/system/more/more.html index 218744969e..8fc2efc939 100644 --- a/scripts/system/more/more.html +++ b/scripts/system/more/more.html @@ -3,7 +3,7 @@ // more.html // // Created by Keb Helion, February 2020. -// Copyright 2020 Project Athena and contributors. +// Copyright 2020 Vircadia contributors // // App maintained in: https://github.com/kasenvr/community-apps // App copied to: https://github.com/kasenvr/project-athena diff --git a/scripts/system/tablet-goto.js b/scripts/system/tablet-goto.js index 8c048cc0cc..08c1f14e6d 100644 --- a/scripts/system/tablet-goto.js +++ b/scripts/system/tablet-goto.js @@ -9,7 +9,7 @@ // // Created by Dante Ruiz on 8 February 2017 // Copyright 2016 High Fidelity, Inc. -// Copyright 2020 Project Athena contributors. +// Copyright 2020 Vircadia contributors. // // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html diff --git a/unpublishedScripts/marketplace/record/html/record.html b/unpublishedScripts/marketplace/record/html/record.html index 899a3ade57..6f6bcd759e 100644 --- a/unpublishedScripts/marketplace/record/html/record.html +++ b/unpublishedScripts/marketplace/record/html/record.html @@ -3,7 +3,7 @@ // // Created by David Rowe on 5 Apr 2017. // Copyright 2017 High Fidelity, Inc. -// Copyright 2020 Vircadia +// Copyright 2020 Vircadia contributors // // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html From 6c6a405020231c2ed0c4a2c565e379847a46c8b8 Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Mon, 25 May 2020 16:41:16 -0400 Subject: [PATCH 118/160] Add periods and remove double copyright in tabletaboutdialog.qml --- CODING_STANDARD.md | 4 ++-- interface/resources/qml/hifi/dialogs/TabletAboutDialog.qml | 7 +------ libraries/render-utils/src/CullFace.slh | 2 +- scripts/system/create/edit.js | 2 +- .../create/entityProperties/html/js/entityProperties.js | 2 +- scripts/system/html/css/edit-style.css | 2 +- scripts/system/more/app-more.js | 2 +- scripts/system/more/css/styles.css | 2 +- scripts/system/more/more.html | 2 +- unpublishedScripts/marketplace/record/html/record.html | 2 +- 10 files changed, 11 insertions(+), 16 deletions(-) diff --git a/CODING_STANDARD.md b/CODING_STANDARD.md index 8900059665..e582ac305f 100644 --- a/CODING_STANDARD.md +++ b/CODING_STANDARD.md @@ -978,7 +978,7 @@ while (true) { Boilerplates should include the filename, location, creator, copyright Vircadia contributors, and Apache 2.0 License information. This should be placed at the top of the file. If editing an existing file that is copyright High Fidelity, add a -second copyright line, copyright Vircadia. +second copyright line, copyright Vircadia contributors. ```cpp // @@ -987,7 +987,7 @@ second copyright line, copyright Vircadia. // // Created by Stephen Birarda on 15 Feb 2013. // Copyright 2013 High Fidelity, Inc. -// Copyright 2020 Vircadia contributors +// Copyright 2020 Vircadia contributors. // // This is where you could place an optional one line comment about the file. // diff --git a/interface/resources/qml/hifi/dialogs/TabletAboutDialog.qml b/interface/resources/qml/hifi/dialogs/TabletAboutDialog.qml index 979eaa7324..3df22a8341 100644 --- a/interface/resources/qml/hifi/dialogs/TabletAboutDialog.qml +++ b/interface/resources/qml/hifi/dialogs/TabletAboutDialog.qml @@ -116,12 +116,7 @@ Rectangle { Item { height: 20; width: 1 } RalewayRegular { color: "white" - text: "© 2020 Vircadia contributors" - size: 14 - } - RalewayRegular { - color: "white" - text: "© 2019 - 2020 Vircadia contributors." + text: "© 2019-2020 Vircadia contributors." size: 14 } RalewayRegular { diff --git a/libraries/render-utils/src/CullFace.slh b/libraries/render-utils/src/CullFace.slh index d1041ae817..b077095fc7 100644 --- a/libraries/render-utils/src/CullFace.slh +++ b/libraries/render-utils/src/CullFace.slh @@ -3,7 +3,7 @@ // libraries/render-utils/src // // Created by HifiExperiments on 4/16/2020. -// Copyright 2020 Vircadia contributors +// Copyright 2020 Vircadia contributors. // // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html diff --git a/scripts/system/create/edit.js b/scripts/system/create/edit.js index bf0bd77efd..b728c8348f 100644 --- a/scripts/system/create/edit.js +++ b/scripts/system/create/edit.js @@ -3,7 +3,7 @@ // Created by Brad Hefta-Gaub on 10/2/14. // Persist toolbar by HRS 6/11/15. // Copyright 2014 High Fidelity, Inc. -// Copyright 2020 Vircadia contributors +// Copyright 2020 Vircadia contributors. // // This script allows you to edit entities with a new UI/UX for mouse and trackpad based editing // diff --git a/scripts/system/create/entityProperties/html/js/entityProperties.js b/scripts/system/create/entityProperties/html/js/entityProperties.js index 736c37abc8..182dddf817 100644 --- a/scripts/system/create/entityProperties/html/js/entityProperties.js +++ b/scripts/system/create/entityProperties/html/js/entityProperties.js @@ -2,7 +2,7 @@ // // Created by Ryan Huffman on 13 Nov 2014 // Copyright 2014 High Fidelity, Inc. -// Copyright 2020 Vircadia contributors +// Copyright 2020 Vircadia contributors. // // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html diff --git a/scripts/system/html/css/edit-style.css b/scripts/system/html/css/edit-style.css index e92344daa7..c72456d414 100644 --- a/scripts/system/html/css/edit-style.css +++ b/scripts/system/html/css/edit-style.css @@ -3,7 +3,7 @@ // // Created by Ryan Huffman on 13 Nov 2014 // Copyright 2014 High Fidelity, Inc. -// Copyright 2020 Vircadia contributors +// Copyright 2020 Vircadia contributors. // // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html diff --git a/scripts/system/more/app-more.js b/scripts/system/more/app-more.js index c4aabefe9c..35a8d4b7a4 100644 --- a/scripts/system/more/app-more.js +++ b/scripts/system/more/app-more.js @@ -4,7 +4,7 @@ // VERSION 1.0 // // Created by Keb Helion, February 2020. -// Copyright 2020 Vircadia contributors +// Copyright 2020 Vircadia contributors. // // This script adds a "More Apps" selector to "Project Athena" to allow the user to add optional functionalities to the tablet. // This application has been designed to work directly from the Github repository. diff --git a/scripts/system/more/css/styles.css b/scripts/system/more/css/styles.css index 1772d56775..e4e6bfba24 100644 --- a/scripts/system/more/css/styles.css +++ b/scripts/system/more/css/styles.css @@ -2,7 +2,7 @@ styles.css Created by Kalila L. on 23 Feb 2020. - Copyright 2020 Vircadia contributors + Copyright 2020 Vircadia contributors. Distributed under the Apache License, Version 2.0. See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html diff --git a/scripts/system/more/more.html b/scripts/system/more/more.html index 8fc2efc939..673684ae70 100644 --- a/scripts/system/more/more.html +++ b/scripts/system/more/more.html @@ -3,7 +3,7 @@ // more.html // // Created by Keb Helion, February 2020. -// Copyright 2020 Vircadia contributors +// Copyright 2020 Vircadia contributors. // // App maintained in: https://github.com/kasenvr/community-apps // App copied to: https://github.com/kasenvr/project-athena diff --git a/unpublishedScripts/marketplace/record/html/record.html b/unpublishedScripts/marketplace/record/html/record.html index 6f6bcd759e..810238a580 100644 --- a/unpublishedScripts/marketplace/record/html/record.html +++ b/unpublishedScripts/marketplace/record/html/record.html @@ -3,7 +3,7 @@ // // Created by David Rowe on 5 Apr 2017. // Copyright 2017 High Fidelity, Inc. -// Copyright 2020 Vircadia contributors +// Copyright 2020 Vircadia contributors. // // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html From d2fdbe280a851aa6c969c37040a565f84b0f5af4 Mon Sep 17 00:00:00 2001 From: kasenvr <52365539+kasenvr@users.noreply.github.com> Date: Mon, 25 May 2020 16:41:38 -0400 Subject: [PATCH 119/160] Update LICENSE Co-authored-by: David Rowe --- LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index 736e1d5ac5..8dfe384174 100644 --- a/LICENSE +++ b/LICENSE @@ -1,5 +1,5 @@ Copyright (c) 2013-2019, High Fidelity, Inc. -Copyright (c) 2019-2020, Vircadia +Copyright (c) 2019-2020, Vircadia contributors. All rights reserved. https://vircadia.com From d451012d086593686445c80879b7d4b19a3b00fb Mon Sep 17 00:00:00 2001 From: David Rowe Date: Thu, 28 May 2020 09:12:17 +1200 Subject: [PATCH 120/160] Enable flying in VR by default --- interface/src/avatar/MyAvatar.cpp | 2 +- interface/src/avatar/MyAvatar.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 4736362fcb..65e1240da4 100644 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -1988,7 +1988,7 @@ void MyAvatar::loadData() { // Flying preferences must be loaded before calling setFlyingEnabled() Setting::Handle firstRunVal { Settings::firstRun, true }; - setFlyingHMDPref(firstRunVal.get() ? false : _flyingHMDSetting.get()); + setFlyingHMDPref(firstRunVal.get() ? true : _flyingHMDSetting.get()); setMovementReference(firstRunVal.get() ? false : _movementReferenceSetting.get()); setDriveGear1(firstRunVal.get() ? DEFAULT_GEAR_1 : _driveGear1Setting.get()); setDriveGear2(firstRunVal.get() ? DEFAULT_GEAR_2 : _driveGear2Setting.get()); diff --git a/interface/src/avatar/MyAvatar.h b/interface/src/avatar/MyAvatar.h index 2a83ab69c1..bde7e98240 100644 --- a/interface/src/avatar/MyAvatar.h +++ b/interface/src/avatar/MyAvatar.h @@ -2702,7 +2702,7 @@ private: bool _enableFlying { false }; bool _flyingPrefDesktop { true }; - bool _flyingPrefHMD { false }; + bool _flyingPrefHMD { true }; bool _wasPushing { false }; bool _isPushing { false }; bool _isBeingPushed { false }; From 4f55bfe51291160262d4479c58562f9aa612b759 Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Wed, 27 May 2020 18:09:01 -0400 Subject: [PATCH 121/160] Update window title. --- interface/src/Application.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 5c4dc56e76..e1e13b88b3 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -1139,7 +1139,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo QFontDatabase::addApplicationFont(PathUtils::resourcesPath() + "fonts/Graphik-SemiBold.ttf"); QFontDatabase::addApplicationFont(PathUtils::resourcesPath() + "fonts/Graphik-Regular.ttf"); QFontDatabase::addApplicationFont(PathUtils::resourcesPath() + "fonts/Graphik-Medium.ttf"); - _window->setWindowTitle("Project Athena"); + _window->setWindowTitle("Vircadia"); Model::setAbstractViewStateInterface(this); // The model class will sometimes need to know view state details from us @@ -3166,7 +3166,7 @@ void Application::showLoginScreen() { QJsonObject loginData = {}; loginData["action"] = "login dialog popped up"; UserActivityLogger::getInstance().logAction("encourageLoginDialog", loginData); - _window->setWindowTitle("Project Athena"); + _window->setWindowTitle("Vircadia"); } else { resumeAfterLoginDialogActionTaken(); } @@ -7063,7 +7063,7 @@ void Application::updateWindowTitle() const { auto accountManager = DependencyManager::get(); auto isInErrorState = nodeList->getDomainHandler().isInErrorState(); - QString buildVersion = " - Project Athena v0.86.0 K2 - " + QString buildVersion = " - Vircadia - " + (BuildInfo::BUILD_TYPE == BuildInfo::BuildType::Stable ? QString("Version") : QString("Build")) + " " + applicationVersion(); From 0b330dfcd605b063a88a1fe3863760ae5d08bcbc Mon Sep 17 00:00:00 2001 From: Alezia Kurdis <60075796+AleziaKurdis@users.noreply.github.com> Date: Thu, 28 May 2020 23:32:44 -0400 Subject: [PATCH 122/160] Zone selector sorting vs uppercases This makes the sorting of the Zone in the Zone selector with the uppercase grouped with the lowercase for a same letter but uppercase always first. (Note: Accented char are considered as a different letter. We would need to support exception cases for all the existing charsets. These are only entities descriptors, not really for literature.) --- scripts/system/create/edit.js | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/scripts/system/create/edit.js b/scripts/system/create/edit.js index 20927d9c3d..325a03937c 100644 --- a/scripts/system/create/edit.js +++ b/scripts/system/create/edit.js @@ -2905,21 +2905,24 @@ function getExistingZoneList() { }; listExistingZones.push(thisZone); } - listExistingZones.sort(zoneSortOrder()); + listExistingZones.sort(zoneSortOrder); return listExistingZones; } -function zoneSortOrder() { - return function(a, b) { - var nameA = a.name.toUpperCase(); - var nameB = b.name.toUpperCase(); - if (nameA > nameB) { - return 1; - } else if (nameA < nameB) { - return -1; - } - return 0; +function zoneSortOrder(a, b) { + var nameA = a.name.toUpperCase(); + var nameB = b.name.toUpperCase(); + if (nameA > nameB) { + return 1; + } else if (nameA < nameB) { + return -1; } + if (a.name > b.name) { + return 1; + } else if (a.name < b.name) { + return -1; + } + return 0; } }()); // END LOCAL_SCOPE From 3c21a4d3f6e2d097ea82bc8603242683763bd6d3 Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Sat, 30 May 2020 19:58:54 -0400 Subject: [PATCH 123/160] Fix Create app using naturalDimensions for all entity types. --- scripts/system/create/edit.js | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/scripts/system/create/edit.js b/scripts/system/create/edit.js index f1104e528a..18dd953269 100644 --- a/scripts/system/create/edit.js +++ b/scripts/system/create/edit.js @@ -578,8 +578,8 @@ var toolBar = (function () { entityID = Entities.addEntity(properties); + var POST_ADJUST_ENTITY_TYPES = ["Model"]; var dimensionsCheckCallback = function(){ - 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; @@ -613,10 +613,18 @@ var toolBar = (function () { var entityIsLoadedCheck = function() { isLoadedCheckCount++; if (isLoadedCheckCount === MAX_LOADED_CHECKS || Entities.isLoaded(entityID)) { - var naturalDimensions = Entities.getEntityProperties(entityID, "naturalDimensions").naturalDimensions + var dimensionsToUse; + if (POST_ADJUST_ENTITY_TYPES.indexOf(properties.type) !== -1) { + // If it is a "Model", use natural dimensions... + dimensionsToUse = Entities.getEntityProperties(entityID, "naturalDimensions").naturalDimensions; + } else { + // If it is not a "Model", use local dimensions... + dimensionsToUse = Entities.getEntityProperties(entityID, "localDimensions").localDimensions; + } + Entities.editEntity(entityID, { visible: true, - dimensions: naturalDimensions + dimensions: dimensionsToUse }) dimensionsCheckCallback(); return; From 778276bb4357a78a8a45e91e58571b00a0dd87ee Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Sat, 30 May 2020 20:56:28 -0400 Subject: [PATCH 124/160] Adjust how check is performed. --- scripts/system/create/edit.js | 66 ++++++++++++++++------------------- 1 file changed, 30 insertions(+), 36 deletions(-) diff --git a/scripts/system/create/edit.js b/scripts/system/create/edit.js index 18dd953269..3d8578715d 100644 --- a/scripts/system/create/edit.js +++ b/scripts/system/create/edit.js @@ -578,34 +578,31 @@ var toolBar = (function () { entityID = Entities.addEntity(properties); - var POST_ADJUST_ENTITY_TYPES = ["Model"]; var dimensionsCheckCallback = function(){ - 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", "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(false, this); - } else if (dimensionsCheckCount < MAX_DIMENSIONS_CHECKS) { - Script.setTimeout(dimensionsCheckFunction, DIMENSIONS_CHECK_INTERVAL); - } - }; - Script.setTimeout(dimensionsCheckFunction, DIMENSIONS_CHECK_INTERVAL); - } + // 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", "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(false, this); + } else if (dimensionsCheckCount < MAX_DIMENSIONS_CHECKS) { + Script.setTimeout(dimensionsCheckFunction, DIMENSIONS_CHECK_INTERVAL); + } + }; + Script.setTimeout(dimensionsCheckFunction, DIMENSIONS_CHECK_INTERVAL); } - // Make sure the entity is loaded before we try to figure out + // Make sure the model entity is loaded before we try to figure out // its dimensions. var MAX_LOADED_CHECKS = 10; var LOADED_CHECK_INTERVAL = 100; @@ -613,25 +610,22 @@ var toolBar = (function () { var entityIsLoadedCheck = function() { isLoadedCheckCount++; if (isLoadedCheckCount === MAX_LOADED_CHECKS || Entities.isLoaded(entityID)) { - var dimensionsToUse; - if (POST_ADJUST_ENTITY_TYPES.indexOf(properties.type) !== -1) { - // If it is a "Model", use natural dimensions... - dimensionsToUse = Entities.getEntityProperties(entityID, "naturalDimensions").naturalDimensions; - } else { - // If it is not a "Model", use local dimensions... - dimensionsToUse = Entities.getEntityProperties(entityID, "localDimensions").localDimensions; - } + var naturalDimensions = Entities.getEntityProperties(entityID, "naturalDimensions").naturalDimensions; Entities.editEntity(entityID, { visible: true, - dimensions: dimensionsToUse + dimensions: naturalDimensions }) dimensionsCheckCallback(); return; } Script.setTimeout(entityIsLoadedCheck, LOADED_CHECK_INTERVAL); } - Script.setTimeout(entityIsLoadedCheck, LOADED_CHECK_INTERVAL); + + var POST_ADJUST_ENTITY_TYPES = ["Model"]; + if (POST_ADJUST_ENTITY_TYPES.indexOf(properties.type) !== -1) { + Script.setTimeout(entityIsLoadedCheck, LOADED_CHECK_INTERVAL); + } SelectionManager.addEntity(entityID, false, this); SelectionManager.saveProperties(); From 94c230b78b2cd2e3a336962202c0aba51b053cea Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Mon, 1 Jun 2020 22:13:52 -0400 Subject: [PATCH 125/160] Add null check to entity render clearing to fix crash. Co-Authored-By: null --- 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 58499e07b6..f070c9c2f7 100644 --- a/libraries/entities-renderer/src/EntityTreeRenderer.cpp +++ b/libraries/entities-renderer/src/EntityTreeRenderer.cpp @@ -248,7 +248,7 @@ void EntityTreeRenderer::clearDomainAndNonOwnedEntities() { for (const auto& entry : _entitiesInScene) { const auto& renderer = entry.second; const EntityItemPointer& entityItem = renderer->getEntity(); - if (!(entityItem->isLocalEntity() || entityItem->isMyAvatarEntity())) { + if (entityItem && !(entityItem->isLocalEntity() || entityItem->isMyAvatarEntity())) { fadeOutRenderable(renderer); } else { savedEntities[entry.first] = entry.second; @@ -682,7 +682,7 @@ void EntityTreeRenderer::leaveDomainAndNonOwnedEntities() { QSet currentEntitiesInsideToSave; foreach (const EntityItemID& entityID, _currentEntitiesInside) { EntityItemPointer entityItem = getTree()->findEntityByEntityItemID(entityID); - if (!(entityItem->isLocalEntity() || entityItem->isMyAvatarEntity())) { + if (entityItem && !(entityItem->isLocalEntity() || entityItem->isMyAvatarEntity())) { emit leaveEntity(entityID); if (_entitiesScriptEngine) { _entitiesScriptEngine->callEntityScriptMethod(entityID, "leaveEntity"); From cefda3f7f2ec288dfe19ca22b26372d64181c81f Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Mon, 1 Jun 2020 22:48:38 -0400 Subject: [PATCH 126/160] Update packaging parameters for Vircadia. --- cmake/macros/GenerateInstallers.cmake | 12 ++++++------ cmake/macros/SetPackagingParameters.cmake | 16 ++++++++-------- cmake/templates/NSIS.template.in | 8 ++++---- interface/CMakeLists.txt | 2 +- 4 files changed, 19 insertions(+), 19 deletions(-) diff --git a/cmake/macros/GenerateInstallers.cmake b/cmake/macros/GenerateInstallers.cmake index 83bdefeada..0442df55cf 100644 --- a/cmake/macros/GenerateInstallers.cmake +++ b/cmake/macros/GenerateInstallers.cmake @@ -18,20 +18,20 @@ macro(GENERATE_INSTALLERS) if (CLIENT_ONLY) set(_PACKAGE_NAME_EXTRA "-Interface") set(INSTALLER_TYPE "client_only") - string(REGEX REPLACE "Project Athena" "Project Athena Interface" _DISPLAY_NAME ${BUILD_ORGANIZATION}) + string(REGEX REPLACE "Vircadia" "Vircadia Interface" _DISPLAY_NAME ${BUILD_ORGANIZATION}) elseif (SERVER_ONLY) set(_PACKAGE_NAME_EXTRA "-Sandbox") set(INSTALLER_TYPE "server_only") - string(REGEX REPLACE "Project Athena" "Project Athena Sandbox" _DISPLAY_NAME ${BUILD_ORGANIZATION}) + string(REGEX REPLACE "Vircadia" "Vircadia Sandbox" _DISPLAY_NAME ${BUILD_ORGANIZATION}) else () set(_DISPLAY_NAME ${BUILD_ORGANIZATION}) set(INSTALLER_TYPE "full") endif () set(CPACK_PACKAGE_NAME ${_DISPLAY_NAME}) - set(CPACK_PACKAGE_VENDOR "Project Athena") + set(CPACK_PACKAGE_VENDOR "Vircadia") set(CPACK_PACKAGE_VERSION ${BUILD_VERSION}) - set(CPACK_PACKAGE_FILE_NAME "ProjectAthena-Alpha${_PACKAGE_NAME_EXTRA}-${BUILD_VERSION}") + set(CPACK_PACKAGE_FILE_NAME "Vircadia-Alpha${_PACKAGE_NAME_EXTRA}-${BUILD_VERSION}") set(CPACK_NSIS_DISPLAY_NAME ${_DISPLAY_NAME}) set(CPACK_NSIS_PACKAGE_NAME ${_DISPLAY_NAME}) if (PR_BUILD) @@ -118,11 +118,11 @@ macro(GENERATE_INSTALLERS) set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE") if (BUILD_CLIENT) - cpack_add_component(${CLIENT_COMPONENT} DISPLAY_NAME "Project Athena Interface") + cpack_add_component(${CLIENT_COMPONENT} DISPLAY_NAME "Vircadia Interface") endif () if (BUILD_SERVER) - cpack_add_component(${SERVER_COMPONENT} DISPLAY_NAME "Project Athena Sandbox") + cpack_add_component(${SERVER_COMPONENT} DISPLAY_NAME "Vircadia Sandbox") endif () include(CPack) diff --git a/cmake/macros/SetPackagingParameters.cmake b/cmake/macros/SetPackagingParameters.cmake index 935996850b..1b7b3dbe8e 100644 --- a/cmake/macros/SetPackagingParameters.cmake +++ b/cmake/macros/SetPackagingParameters.cmake @@ -35,7 +35,7 @@ macro(SET_PACKAGING_PARAMETERS) set(DEPLOY_PACKAGE TRUE) set(PRODUCTION_BUILD 1) set(BUILD_VERSION ${RELEASE_NUMBER}) - set(BUILD_ORGANIZATION "Project Athena") + set(BUILD_ORGANIZATION "Vircadia") set(HIGH_FIDELITY_PROTOCOL "hifi") set(HIGH_FIDELITY_APP_PROTOCOL "hifiapp") set(INTERFACE_BUNDLE_NAME "interface") @@ -60,7 +60,7 @@ macro(SET_PACKAGING_PARAMETERS) set(DEPLOY_PACKAGE TRUE) set(PR_BUILD 1) set(BUILD_VERSION "PR${RELEASE_NUMBER}") - set(BUILD_ORGANIZATION "Project Athena - PR${RELEASE_NUMBER}") + set(BUILD_ORGANIZATION "Vircadia - PR${RELEASE_NUMBER}") set(INTERFACE_BUNDLE_NAME "interface") set(INTERFACE_ICON_PREFIX "interface-beta") @@ -69,7 +69,7 @@ macro(SET_PACKAGING_PARAMETERS) else () set(DEV_BUILD 1) set(BUILD_VERSION "dev") - set(BUILD_ORGANIZATION "Project Athena - ${BUILD_VERSION}") + set(BUILD_ORGANIZATION "Vircadia - ${BUILD_VERSION}") set(INTERFACE_BUNDLE_NAME "interface") set(INTERFACE_ICON_PREFIX "interface-beta") @@ -171,21 +171,21 @@ macro(SET_PACKAGING_PARAMETERS) # shortcut names if (PRODUCTION_BUILD) - set(INTERFACE_SHORTCUT_NAME "Project Athena") + set(INTERFACE_SHORTCUT_NAME "Vircadia") set(CONSOLE_SHORTCUT_NAME "Console") set(SANDBOX_SHORTCUT_NAME "Sandbox") set(APP_USER_MODEL_ID "com.highfidelity.console") else () - set(INTERFACE_SHORTCUT_NAME "Project Athena - ${BUILD_VERSION_NO_SHA}") + set(INTERFACE_SHORTCUT_NAME "Vircadia - ${BUILD_VERSION_NO_SHA}") set(CONSOLE_SHORTCUT_NAME "Console - ${BUILD_VERSION_NO_SHA}") set(SANDBOX_SHORTCUT_NAME "Sandbox - ${BUILD_VERSION_NO_SHA}") endif () set(INTERFACE_HF_SHORTCUT_NAME "${INTERFACE_SHORTCUT_NAME}") - set(CONSOLE_HF_SHORTCUT_NAME "Project Athena ${CONSOLE_SHORTCUT_NAME}") - set(SANDBOX_HF_SHORTCUT_NAME "Project Athena ${SANDBOX_SHORTCUT_NAME}") + set(CONSOLE_HF_SHORTCUT_NAME "Vircadia ${CONSOLE_SHORTCUT_NAME}") + set(SANDBOX_HF_SHORTCUT_NAME "Vircadia ${SANDBOX_SHORTCUT_NAME}") - set(PRE_SANDBOX_INTERFACE_SHORTCUT_NAME "Project Athena") + set(PRE_SANDBOX_INTERFACE_SHORTCUT_NAME "Vircadia") set(PRE_SANDBOX_CONSOLE_SHORTCUT_NAME "Server Console") # check if we need to find signtool diff --git a/cmake/templates/NSIS.template.in b/cmake/templates/NSIS.template.in index 0e4c2f3579..8e621b8f2d 100644 --- a/cmake/templates/NSIS.template.in +++ b/cmake/templates/NSIS.template.in @@ -720,7 +720,7 @@ Function InstallTypesPage StrCpy $OffsetUnits u StrCpy $Express "0" - ${NSD_CreateRadioButton} 30% $CurrentOffset$OffsetUnits 100% 10u "Express Install (Recommended)"; $\nInstalls Project Athena Interface and Project Athena Sandbox" + ${NSD_CreateRadioButton} 30% $CurrentOffset$OffsetUnits 100% 10u "Express Install (Recommended)"; $\nInstalls Vircadia Interface and Vircadia Sandbox" pop $ExpressInstallRadioButton ${NSD_OnClick} $ExpressInstallRadioButton ChangeExpressLabel IntOp $CurrentOffset $CurrentOffset + 15 @@ -973,7 +973,7 @@ Function ReadPostInstallOptions ${If} @CLIENT_COMPONENT_CONDITIONAL@ ${LogText} "Option: Install Client" - ; check if the user asked for a desktop shortcut to Project Athena + ; check if the user asked for a desktop shortcut to Vircadia ${NSD_GetState} $DesktopClientCheckbox $DesktopClientState ${LogText} "Option: Create Client Desktop Shortcut: $DesktopClientState" ${EndIf} @@ -1027,7 +1027,7 @@ Function HandlePostInstallOptions ${EndIf} ${If} @CLIENT_COMPONENT_CONDITIONAL@ - ; check if the user asked for a desktop shortcut to Project Athena + ; check if the user asked for a desktop shortcut to Vircadia ${If} $DesktopClientState == ${BST_CHECKED} CreateShortCut "$DESKTOP\@INTERFACE_HF_SHORTCUT_NAME@.lnk" "$INSTDIR\@INTERFACE_WIN_EXEC_NAME@" !insertmacro WriteInstallOption "@CLIENT_DESKTOP_SHORTCUT_REG_KEY@" YES @@ -1088,7 +1088,7 @@ Function HandlePostInstallOptions ClearErrors ; copy the data from production build to this PR build - CopyFiles "$APPDATA\Project Athena\*" $0 + CopyFiles "$APPDATA\Vircadia\*" $0 ; handle an error in copying files IfErrors 0 NoError diff --git a/interface/CMakeLists.txt b/interface/CMakeLists.txt index dc9e5254df..1a0e279674 100644 --- a/interface/CMakeLists.txt +++ b/interface/CMakeLists.txt @@ -159,7 +159,7 @@ elseif (WIN32) set(CONFIGURE_ICON_RC_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/Icon.rc") configure_file("${HF_CMAKE_DIR}/templates/Icon.rc.in" ${CONFIGURE_ICON_RC_OUTPUT}) - set(APP_FULL_NAME "Project Athena") + set(APP_FULL_NAME "Vircadia") set(CONFIGURE_VERSION_INFO_RC_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/VersionInfo.rc") configure_file("${HF_CMAKE_DIR}/templates/VersionInfo.rc.in" ${CONFIGURE_VERSION_INFO_RC_OUTPUT}) From 21fd10d154c43442e3ec4e4c0b17f51271f0f863 Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Wed, 3 Jun 2020 15:52:10 -0400 Subject: [PATCH 127/160] Revert commit 359248829c using -m 1 to temporarily fix issue 383. --- CMakeLists.txt | 1 - .../src/avatars/ScriptableAvatar.cpp | 4 +- interface/src/ModelPropertiesDialog.cpp | 2 +- interface/src/avatar/AvatarDoctor.cpp | 8 +- interface/src/avatar/AvatarDoctor.h | 2 +- interface/src/avatar/MyAvatar.cpp | 4 +- interface/src/raypick/CollisionPick.cpp | 238 +- interface/src/raypick/CollisionPick.h | 5 +- libraries/animation/src/AnimSkeleton.cpp | 17 +- libraries/animation/src/AnimSkeleton.h | 2 +- .../src/avatars-renderer/Avatar.cpp | 2 +- .../src/avatars-renderer/SkeletonModel.cpp | 4 +- libraries/baking/src/FBXBaker.cpp | 6 +- libraries/baking/src/FBXBaker.h | 2 +- libraries/baking/src/MaterialBaker.cpp | 4 +- libraries/baking/src/MaterialBaker.h | 2 +- libraries/baking/src/ModelBaker.cpp | 2 +- libraries/baking/src/OBJBaker.cpp | 43 +- libraries/baking/src/OBJBaker.h | 4 +- .../src/RenderableModelEntityItem.cpp | 372 +-- .../src/RenderableModelEntityItem.h | 2 +- .../RenderableParticleEffectEntityItem.cpp | 14 +- .../src/RenderableParticleEffectEntityItem.h | 4 +- .../src/RenderablePolyVoxEntityItem.cpp | 49 +- libraries/entities/src/ZoneEntityItem.cpp | 4 +- libraries/entities/src/ZoneEntityItem.h | 2 +- libraries/fbx/src/FBXSerializer.cpp | 525 +++-- libraries/fbx/src/FBXSerializer.h | 10 +- libraries/fbx/src/FBXSerializer_Mesh.cpp | 21 +- libraries/fbx/src/FST.cpp | 2 +- libraries/fbx/src/GLTFSerializer.cpp | 1998 +++++++++-------- libraries/fbx/src/GLTFSerializer.h | 79 +- libraries/fbx/src/OBJSerializer.cpp | 164 +- libraries/fbx/src/OBJSerializer.h | 1 + libraries/hfm/src/hfm/HFM.cpp | 169 +- libraries/hfm/src/hfm/HFM.h | 98 +- libraries/hfm/src/hfm/HFMModelMath.cpp | 212 -- libraries/hfm/src/hfm/HFMModelMath.h | 45 - libraries/hfm/src/hfm/HFMSerializer.h | 2 +- .../model-baker/src/model-baker/Baker.cpp | 83 +- .../model-baker/src/model-baker/BakerTypes.h | 8 - .../src/model-baker/BuildDracoMeshTask.cpp | 67 +- .../src/model-baker/BuildDracoMeshTask.h | 2 +- .../src/model-baker/BuildGraphicsMeshTask.cpp | 74 +- .../src/model-baker/BuildGraphicsMeshTask.h | 6 +- .../model-baker/CalculateMeshTangentsTask.cpp | 2 +- .../CalculateTransformedExtentsTask.cpp | 41 - .../CalculateTransformedExtentsTask.h | 29 - .../model-baker/CollectShapeVerticesTask.cpp | 91 - .../model-baker/CollectShapeVerticesTask.h | 30 - .../src/model-networking/ModelCache.cpp | 126 +- .../src/model-networking/ModelCache.h | 58 +- libraries/physics/src/ShapeFactory.cpp | 12 +- .../src/procedural/ProceduralMaterialCache.h | 2 +- .../render-utils/src/CauterizedModel.cpp | 218 +- libraries/render-utils/src/CauterizedModel.h | 2 +- libraries/render-utils/src/GeometryCache.cpp | 2 +- libraries/render-utils/src/GeometryCache.h | 2 +- .../render-utils/src/MeshPartPayload.cpp | 97 +- libraries/render-utils/src/MeshPartPayload.h | 15 +- libraries/render-utils/src/Model.cpp | 337 +-- libraries/render-utils/src/Model.h | 30 +- .../render-utils/src/SoftAttachmentModel.cpp | 37 +- libraries/shared/src/GLMHelpers.h | 10 - libraries/shared/src/ShapeInfo.cpp | 10 +- libraries/shared/src/ShapeInfo.h | 12 +- tools/vhacd-util/src/VHACDUtil.cpp | 17 +- tools/vhacd-util/src/VHACDUtilApp.cpp | 6 +- 68 files changed, 2639 insertions(+), 2912 deletions(-) delete mode 100644 libraries/hfm/src/hfm/HFMModelMath.cpp delete mode 100644 libraries/hfm/src/hfm/HFMModelMath.h delete mode 100644 libraries/model-baker/src/model-baker/CalculateTransformedExtentsTask.cpp delete mode 100644 libraries/model-baker/src/model-baker/CalculateTransformedExtentsTask.h delete mode 100644 libraries/model-baker/src/model-baker/CollectShapeVerticesTask.cpp delete mode 100644 libraries/model-baker/src/model-baker/CollectShapeVerticesTask.h diff --git a/CMakeLists.txt b/CMakeLists.txt index ecbfd2eed9..16ac6d2a83 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -270,7 +270,6 @@ find_package( Threads ) add_definitions(-DGLM_FORCE_RADIANS) add_definitions(-DGLM_ENABLE_EXPERIMENTAL) add_definitions(-DGLM_FORCE_CTOR_INIT) -add_definitions(-DGLM_LANG_STL11_FORCED) # Workaround for GLM not detecting support for C++11 templates on Android if (WIN32) # Deal with fakakta Visual Studo 2017 bug diff --git a/assignment-client/src/avatars/ScriptableAvatar.cpp b/assignment-client/src/avatars/ScriptableAvatar.cpp index 3e91cd05e8..529ad4b387 100644 --- a/assignment-client/src/avatars/ScriptableAvatar.cpp +++ b/assignment-client/src/avatars/ScriptableAvatar.cpp @@ -144,10 +144,10 @@ void ScriptableAvatar::update(float deltatime) { } _animationDetails.currentFrame = currentFrame; - const std::vector& modelJoints = _bind->getHFMModel().joints; + const QVector& modelJoints = _bind->getHFMModel().joints; QStringList animationJointNames = _animation->getJointNames(); - const auto nJoints = (int)modelJoints.size(); + const int nJoints = modelJoints.size(); if (_jointData.size() != nJoints) { _jointData.resize(nJoints); } diff --git a/interface/src/ModelPropertiesDialog.cpp b/interface/src/ModelPropertiesDialog.cpp index bf7fd26b08..d67341990d 100644 --- a/interface/src/ModelPropertiesDialog.cpp +++ b/interface/src/ModelPropertiesDialog.cpp @@ -80,7 +80,7 @@ QVariantHash ModelPropertiesDialog::getMapping() const { // update the joint indices QVariantHash jointIndices; - for (size_t i = 0; i < _hfmModel.joints.size(); i++) { + for (int i = 0; i < _hfmModel.joints.size(); i++) { jointIndices.insert(_hfmModel.joints.at(i).name, QString::number(i)); } mapping.insert(JOINT_INDEX_FIELD, jointIndices); diff --git a/interface/src/avatar/AvatarDoctor.cpp b/interface/src/avatar/AvatarDoctor.cpp index 1fafe6485d..d84383cf4f 100644 --- a/interface/src/avatar/AvatarDoctor.cpp +++ b/interface/src/avatar/AvatarDoctor.cpp @@ -79,7 +79,7 @@ void AvatarDoctor::startDiagnosing() { _missingTextureCount = 0; _unsupportedTextureCount = 0; - const auto resource = DependencyManager::get()->getModelResource(_avatarFSTFileUrl); + const auto resource = DependencyManager::get()->getGeometryResource(_avatarFSTFileUrl); resource->refresh(); const auto resourceLoaded = [this, resource](bool success) { @@ -99,12 +99,12 @@ void AvatarDoctor::startDiagnosing() { } // RIG - if (avatarModel.joints.empty()) { + if (avatarModel.joints.isEmpty()) { addError("Avatar has no rig.", "no-rig"); } else { auto jointNames = avatarModel.getJointNames(); - if (avatarModel.joints.size() > NETWORKED_JOINTS_LIMIT) { + if (avatarModel.joints.length() > NETWORKED_JOINTS_LIMIT) { addError(tr( "Avatar has over %n bones.", "", NETWORKED_JOINTS_LIMIT), "maximum-bone-limit"); } // Avatar does not have Hips bone mapped @@ -297,7 +297,7 @@ void AvatarDoctor::startDiagnosing() { if (resource->isLoaded()) { resourceLoaded(!resource->isFailed()); } else { - connect(resource.data(), &ModelResource::finished, this, resourceLoaded); + connect(resource.data(), &GeometryResource::finished, this, resourceLoaded); } } else { addError("Model file cannot be opened", "missing-file"); diff --git a/interface/src/avatar/AvatarDoctor.h b/interface/src/avatar/AvatarDoctor.h index 1e3c84e02f..1465a5defc 100644 --- a/interface/src/avatar/AvatarDoctor.h +++ b/interface/src/avatar/AvatarDoctor.h @@ -53,7 +53,7 @@ private: int _materialMappingCount = 0; int _materialMappingLoadedCount = 0; - ModelResource::Pointer _model; + GeometryResource::Pointer _model; bool _isDiagnosing = false; }; diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 749b617dbe..f947028e02 100644 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -2474,7 +2474,7 @@ void MyAvatar::setSkeletonModelURL(const QUrl& skeletonModelURL) { if (_fullAvatarModelName.isEmpty()) { // Store the FST file name into preferences - const auto& mapping = _skeletonModel->getNetworkModel()->getMapping(); + const auto& mapping = _skeletonModel->getGeometry()->getMapping(); if (mapping.value("name").isValid()) { _fullAvatarModelName = mapping.value("name").toString(); } @@ -2482,7 +2482,7 @@ void MyAvatar::setSkeletonModelURL(const QUrl& skeletonModelURL) { initHeadBones(); _skeletonModel->setCauterizeBoneSet(_headBoneSet); - _fstAnimGraphOverrideUrl = _skeletonModel->getNetworkModel()->getAnimGraphOverrideUrl(); + _fstAnimGraphOverrideUrl = _skeletonModel->getGeometry()->getAnimGraphOverrideUrl(); initAnimGraph(); initFlowFromFST(); } diff --git a/interface/src/raypick/CollisionPick.cpp b/interface/src/raypick/CollisionPick.cpp index 756c8fab7f..2602bdb0a0 100644 --- a/interface/src/raypick/CollisionPick.cpp +++ b/interface/src/raypick/CollisionPick.cpp @@ -121,9 +121,8 @@ bool CollisionPick::isLoaded() const { bool CollisionPick::getShapeInfoReady(const CollisionRegion& pick) { if (_mathPick.shouldComputeShapeInfo()) { if (_cachedResource && _cachedResource->isLoaded()) { - // TODO: Model CollisionPick support - //computeShapeInfo(pick, *_mathPick.shapeInfo, _cachedResource); - //_mathPick.loaded = true; + computeShapeInfo(pick, *_mathPick.shapeInfo, _cachedResource); + _mathPick.loaded = true; } else { _mathPick.loaded = false; } @@ -135,7 +134,7 @@ bool CollisionPick::getShapeInfoReady(const CollisionRegion& pick) { return _mathPick.loaded; } -void CollisionPick::computeShapeInfoDimensionsOnly(const CollisionRegion& pick, ShapeInfo& shapeInfo, QSharedPointer resource) { +void CollisionPick::computeShapeInfoDimensionsOnly(const CollisionRegion& pick, ShapeInfo& shapeInfo, QSharedPointer resource) { ShapeType type = shapeInfo.getType(); glm::vec3 dimensions = pick.transform.getScale(); QString modelURL = (resource ? resource->getURL().toString() : ""); @@ -148,12 +147,241 @@ void CollisionPick::computeShapeInfoDimensionsOnly(const CollisionRegion& pick, } } +void CollisionPick::computeShapeInfo(const CollisionRegion& pick, ShapeInfo& shapeInfo, QSharedPointer resource) { + // This code was copied and modified from RenderableModelEntityItem::computeShapeInfo + // TODO: Move to some shared code area (in entities-renderer? model-networking?) + // after we verify this is working and do a diff comparison with RenderableModelEntityItem::computeShapeInfo + // to consolidate the code. + // We may also want to make computeShapeInfo always abstract away from the gpu model mesh, like it does here. + const uint32_t TRIANGLE_STRIDE = 3; + const uint32_t QUAD_STRIDE = 4; + + ShapeType type = shapeInfo.getType(); + glm::vec3 dimensions = pick.transform.getScale(); + if (type == SHAPE_TYPE_COMPOUND) { + // should never fall in here when collision model not fully loaded + // TODO: assert that all geometries exist and are loaded + //assert(_model && _model->isLoaded() && _compoundShapeResource && _compoundShapeResource->isLoaded()); + const HFMModel& collisionModel = resource->getHFMModel(); + + ShapeInfo::PointCollection& pointCollection = shapeInfo.getPointCollection(); + pointCollection.clear(); + uint32_t i = 0; + + // the way OBJ files get read, each section under a "g" line is its own meshPart. We only expect + // to find one actual "mesh" (with one or more meshParts in it), but we loop over the meshes, just in case. + foreach (const HFMMesh& mesh, collisionModel.meshes) { + // each meshPart is a convex hull + foreach (const HFMMeshPart &meshPart, mesh.parts) { + pointCollection.push_back(QVector()); + ShapeInfo::PointList& pointsInPart = pointCollection[i]; + + // run through all the triangles and (uniquely) add each point to the hull + uint32_t numIndices = (uint32_t)meshPart.triangleIndices.size(); + // TODO: assert rather than workaround after we start sanitizing HFMMesh higher up + //assert(numIndices % TRIANGLE_STRIDE == 0); + numIndices -= numIndices % TRIANGLE_STRIDE; // WORKAROUND lack of sanity checking in FBXSerializer + + for (uint32_t j = 0; j < numIndices; j += TRIANGLE_STRIDE) { + glm::vec3 p0 = mesh.vertices[meshPart.triangleIndices[j]]; + glm::vec3 p1 = mesh.vertices[meshPart.triangleIndices[j + 1]]; + glm::vec3 p2 = mesh.vertices[meshPart.triangleIndices[j + 2]]; + if (!pointsInPart.contains(p0)) { + pointsInPart << p0; + } + if (!pointsInPart.contains(p1)) { + pointsInPart << p1; + } + if (!pointsInPart.contains(p2)) { + pointsInPart << p2; + } + } + + // run through all the quads and (uniquely) add each point to the hull + numIndices = (uint32_t)meshPart.quadIndices.size(); + // TODO: assert rather than workaround after we start sanitizing HFMMesh higher up + //assert(numIndices % QUAD_STRIDE == 0); + numIndices -= numIndices % QUAD_STRIDE; // WORKAROUND lack of sanity checking in FBXSerializer + + for (uint32_t j = 0; j < numIndices; j += QUAD_STRIDE) { + glm::vec3 p0 = mesh.vertices[meshPart.quadIndices[j]]; + glm::vec3 p1 = mesh.vertices[meshPart.quadIndices[j + 1]]; + glm::vec3 p2 = mesh.vertices[meshPart.quadIndices[j + 2]]; + glm::vec3 p3 = mesh.vertices[meshPart.quadIndices[j + 3]]; + if (!pointsInPart.contains(p0)) { + pointsInPart << p0; + } + if (!pointsInPart.contains(p1)) { + pointsInPart << p1; + } + if (!pointsInPart.contains(p2)) { + pointsInPart << p2; + } + if (!pointsInPart.contains(p3)) { + pointsInPart << p3; + } + } + + if (pointsInPart.size() == 0) { + qCDebug(scriptengine) << "Warning -- meshPart has no faces"; + pointCollection.pop_back(); + continue; + } + ++i; + } + } + + // We expect that the collision model will have the same units and will be displaced + // from its origin in the same way the visual model is. The visual model has + // been centered and probably scaled. We take the scaling and offset which were applied + // to the visual model and apply them to the collision model (without regard for the + // collision model's extents). + + glm::vec3 scaleToFit = dimensions / resource->getHFMModel().getUnscaledMeshExtents().size(); + // multiply each point by scale + for (int32_t i = 0; i < pointCollection.size(); i++) { + for (int32_t j = 0; j < pointCollection[i].size(); j++) { + // back compensate for registration so we can apply that offset to the shapeInfo later + pointCollection[i][j] = scaleToFit * pointCollection[i][j]; + } + } + shapeInfo.setParams(type, dimensions, resource->getURL().toString()); + } else if (type >= SHAPE_TYPE_SIMPLE_HULL && type <= SHAPE_TYPE_STATIC_MESH) { + const HFMModel& hfmModel = resource->getHFMModel(); + int numHFMMeshes = hfmModel.meshes.size(); + int totalNumVertices = 0; + for (int i = 0; i < numHFMMeshes; i++) { + const HFMMesh& mesh = hfmModel.meshes.at(i); + totalNumVertices += mesh.vertices.size(); + } + const int32_t MAX_VERTICES_PER_STATIC_MESH = 1e6; + if (totalNumVertices > MAX_VERTICES_PER_STATIC_MESH) { + qWarning() << "model" << "has too many vertices" << totalNumVertices << "and will collide as a box."; + shapeInfo.setParams(SHAPE_TYPE_BOX, 0.5f * dimensions); + return; + } + + auto& meshes = resource->getHFMModel().meshes; + int32_t numMeshes = (int32_t)(meshes.size()); + + const int MAX_ALLOWED_MESH_COUNT = 1000; + if (numMeshes > MAX_ALLOWED_MESH_COUNT) { + // too many will cause the deadlock timer to throw... + shapeInfo.setParams(SHAPE_TYPE_BOX, 0.5f * dimensions); + return; + } + + ShapeInfo::PointCollection& pointCollection = shapeInfo.getPointCollection(); + pointCollection.clear(); + if (type == SHAPE_TYPE_SIMPLE_COMPOUND) { + pointCollection.resize(numMeshes); + } else { + pointCollection.resize(1); + } + + ShapeInfo::TriangleIndices& triangleIndices = shapeInfo.getTriangleIndices(); + triangleIndices.clear(); + + Extents extents; + int32_t meshCount = 0; + int32_t pointListIndex = 0; + for (auto& mesh : meshes) { + if (!mesh.vertices.size()) { + continue; + } + QVector vertices = mesh.vertices; + + ShapeInfo::PointList& points = pointCollection[pointListIndex]; + + // reserve room + int32_t sizeToReserve = (int32_t)(vertices.count()); + if (type == SHAPE_TYPE_SIMPLE_COMPOUND) { + // a list of points for each mesh + pointListIndex++; + } else { + // only one list of points + sizeToReserve += (int32_t)points.size(); + } + points.reserve(sizeToReserve); + + // copy points + const glm::vec3* vertexItr = vertices.cbegin(); + while (vertexItr != vertices.cend()) { + glm::vec3 point = *vertexItr; + points.push_back(point); + extents.addPoint(point); + ++vertexItr; + } + + if (type == SHAPE_TYPE_STATIC_MESH) { + // copy into triangleIndices + size_t triangleIndicesCount = 0; + for (const HFMMeshPart& meshPart : mesh.parts) { + triangleIndicesCount += meshPart.triangleIndices.count(); + } + triangleIndices.reserve((int)triangleIndicesCount); + + for (const HFMMeshPart& meshPart : mesh.parts) { + const int* indexItr = meshPart.triangleIndices.cbegin(); + while (indexItr != meshPart.triangleIndices.cend()) { + triangleIndices.push_back(*indexItr); + ++indexItr; + } + } + } else if (type == SHAPE_TYPE_SIMPLE_COMPOUND) { + // for each mesh copy unique part indices, separated by special bogus (flag) index values + for (const HFMMeshPart& meshPart : mesh.parts) { + // collect unique list of indices for this part + std::set uniqueIndices; + auto numIndices = meshPart.triangleIndices.count(); + // TODO: assert rather than workaround after we start sanitizing HFMMesh higher up + //assert(numIndices% TRIANGLE_STRIDE == 0); + numIndices -= numIndices % TRIANGLE_STRIDE; // WORKAROUND lack of sanity checking in FBXSerializer + + auto indexItr = meshPart.triangleIndices.cbegin(); + while (indexItr != meshPart.triangleIndices.cend()) { + uniqueIndices.insert(*indexItr); + ++indexItr; + } + + // store uniqueIndices in triangleIndices + triangleIndices.reserve(triangleIndices.size() + (int32_t)uniqueIndices.size()); + for (auto index : uniqueIndices) { + triangleIndices.push_back(index); + } + // flag end of part + triangleIndices.push_back(END_OF_MESH_PART); + } + // flag end of mesh + triangleIndices.push_back(END_OF_MESH); + } + ++meshCount; + } + + // scale and shift + glm::vec3 extentsSize = extents.size(); + glm::vec3 scaleToFit = dimensions / extentsSize; + for (int32_t i = 0; i < 3; ++i) { + if (extentsSize[i] < 1.0e-6f) { + scaleToFit[i] = 1.0f; + } + } + for (auto points : pointCollection) { + for (int32_t i = 0; i < points.size(); ++i) { + points[i] = (points[i] * scaleToFit); + } + } + + shapeInfo.setParams(type, 0.5f * dimensions, resource->getURL().toString()); + } +} + CollisionPick::CollisionPick(const PickFilter& filter, float maxDistance, bool enabled, bool scaleWithParent, CollisionRegion collisionRegion, PhysicsEnginePointer physicsEngine) : Pick(collisionRegion, filter, maxDistance, enabled), _scaleWithParent(scaleWithParent), _physicsEngine(physicsEngine) { if (collisionRegion.shouldComputeShapeInfo()) { - _cachedResource = DependencyManager::get()->getCollisionModelResource(collisionRegion.modelURL); + _cachedResource = DependencyManager::get()->getCollisionGeometryResource(collisionRegion.modelURL); } _mathPick.loaded = isLoaded(); } diff --git a/interface/src/raypick/CollisionPick.h b/interface/src/raypick/CollisionPick.h index 617c7b1f00..24317bf19a 100644 --- a/interface/src/raypick/CollisionPick.h +++ b/interface/src/raypick/CollisionPick.h @@ -63,13 +63,14 @@ protected: bool isLoaded() const; // Returns true if _mathPick.shapeInfo is valid. Otherwise, attempts to get the _mathPick ready for use. bool getShapeInfoReady(const CollisionRegion& pick); - void computeShapeInfoDimensionsOnly(const CollisionRegion& pick, ShapeInfo& shapeInfo, QSharedPointer resource); + void computeShapeInfo(const CollisionRegion& pick, ShapeInfo& shapeInfo, QSharedPointer resource); + void computeShapeInfoDimensionsOnly(const CollisionRegion& pick, ShapeInfo& shapeInfo, QSharedPointer resource); void filterIntersections(std::vector& intersections) const; bool _scaleWithParent; PhysicsEnginePointer _physicsEngine; - QSharedPointer _cachedResource; + QSharedPointer _cachedResource; // Options for what information to get from collision results bool _includeNormals; diff --git a/libraries/animation/src/AnimSkeleton.cpp b/libraries/animation/src/AnimSkeleton.cpp index e5f05ab45f..b26d00d8d0 100644 --- a/libraries/animation/src/AnimSkeleton.cpp +++ b/libraries/animation/src/AnimSkeleton.cpp @@ -20,17 +20,24 @@ AnimSkeleton::AnimSkeleton(const HFMModel& hfmModel) { _geometryOffset = hfmModel.offset; - buildSkeletonFromJoints(hfmModel.joints, hfmModel.jointRotationOffsets); + // convert to std::vector of joints + std::vector joints; + joints.reserve(hfmModel.joints.size()); + for (auto& joint : hfmModel.joints) { + joints.push_back(joint); + } + buildSkeletonFromJoints(joints, hfmModel.jointRotationOffsets); // we make a copy of the inverseBindMatrices in order to prevent mutating the model bind pose // when we are dealing with a joint offset in the model - for (uint32_t i = 0; i < (uint32_t)hfmModel.skinDeformers.size(); i++) { - const auto& deformer = hfmModel.skinDeformers[i]; + for (int i = 0; i < (int)hfmModel.meshes.size(); i++) { + const HFMMesh& mesh = hfmModel.meshes.at(i); std::vector dummyClustersList; - for (uint32_t j = 0; j < (uint32_t)deformer.clusters.size(); j++) { + for (int j = 0; j < mesh.clusters.size(); j++) { + std::vector bindMatrices; // cast into a non-const reference, so we can mutate the FBXCluster - HFMCluster& cluster = const_cast(deformer.clusters.at(j)); + HFMCluster& cluster = const_cast(mesh.clusters.at(j)); HFMCluster localCluster; localCluster.jointIndex = cluster.jointIndex; diff --git a/libraries/animation/src/AnimSkeleton.h b/libraries/animation/src/AnimSkeleton.h index a6470ac609..efc1c1599f 100644 --- a/libraries/animation/src/AnimSkeleton.h +++ b/libraries/animation/src/AnimSkeleton.h @@ -68,7 +68,7 @@ public: void dump(const AnimPoseVec& poses) const; std::vector lookUpJointIndices(const std::vector& jointNames) const; - const HFMCluster getClusterBindMatricesOriginalValues(int skinDeformerIndex, int clusterIndex) const { return _clusterBindMatrixOriginalValues[skinDeformerIndex][clusterIndex]; } + const HFMCluster getClusterBindMatricesOriginalValues(const int meshIndex, const int clusterIndex) const { return _clusterBindMatrixOriginalValues[meshIndex][clusterIndex]; } protected: void buildSkeletonFromJoints(const std::vector& joints, const QMap jointOffsets); diff --git a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp index 3792057052..16dc99ab49 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp +++ b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp @@ -943,7 +943,7 @@ void Avatar::simulateAttachments(float deltaTime) { bool texturesLoaded = _attachmentModelsTexturesLoaded.at(i); // Watch for texture loading - if (!texturesLoaded && model->getNetworkModel() && model->getNetworkModel()->areTexturesLoaded()) { + if (!texturesLoaded && model->getGeometry() && model->getGeometry()->areTexturesLoaded()) { _attachmentModelsTexturesLoaded[i] = true; model->updateRenderItems(); } diff --git a/libraries/avatars-renderer/src/avatars-renderer/SkeletonModel.cpp b/libraries/avatars-renderer/src/avatars-renderer/SkeletonModel.cpp index e9e26ca716..ccc87c28f3 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/SkeletonModel.cpp +++ b/libraries/avatars-renderer/src/avatars-renderer/SkeletonModel.cpp @@ -171,7 +171,7 @@ void SkeletonModel::simulate(float deltaTime, bool fullUpdate) { // FIXME: This texture loading logic should probably live in Avatar, to mirror RenderableModelEntityItem, // but Avatars don't get updates in the same way - if (!_texturesLoaded && getNetworkModel() && getNetworkModel()->areTexturesLoaded()) { + if (!_texturesLoaded && getGeometry() && getGeometry()->areTexturesLoaded()) { _texturesLoaded = true; updateRenderItems(); } @@ -326,7 +326,7 @@ void SkeletonModel::computeBoundingShape() { } const HFMModel& hfmModel = getHFMModel(); - if (hfmModel.joints.empty() || _rig.indexOfJoint("Hips") == -1) { + if (hfmModel.joints.isEmpty() || _rig.indexOfJoint("Hips") == -1) { // rootJointIndex == -1 if the avatar model has no skeleton return; } diff --git a/libraries/baking/src/FBXBaker.cpp b/libraries/baking/src/FBXBaker.cpp index 7f508dfe15..eb02ac2241 100644 --- a/libraries/baking/src/FBXBaker.cpp +++ b/libraries/baking/src/FBXBaker.cpp @@ -90,11 +90,11 @@ void FBXBaker::replaceMeshNodeWithDraco(FBXNode& meshNode, const QByteArray& dra } } -void FBXBaker::rewriteAndBakeSceneModels(const std::vector& meshes, const std::vector& dracoMeshes, const std::vector>& dracoMaterialLists) { +void FBXBaker::rewriteAndBakeSceneModels(const QVector& meshes, const std::vector& dracoMeshes, const std::vector>& dracoMaterialLists) { std::vector meshIndexToRuntimeOrder; - auto meshCount = (uint32_t)meshes.size(); + auto meshCount = (int)meshes.size(); meshIndexToRuntimeOrder.resize(meshCount); - for (uint32_t i = 0; i < meshCount; i++) { + for (int i = 0; i < meshCount; i++) { meshIndexToRuntimeOrder[meshes[i].meshIndex] = i; } diff --git a/libraries/baking/src/FBXBaker.h b/libraries/baking/src/FBXBaker.h index 6ac05e36e9..a528de512d 100644 --- a/libraries/baking/src/FBXBaker.h +++ b/libraries/baking/src/FBXBaker.h @@ -33,7 +33,7 @@ protected: virtual void bakeProcessedSource(const hfm::Model::Pointer& hfmModel, const std::vector& dracoMeshes, const std::vector>& dracoMaterialLists) override; private: - void rewriteAndBakeSceneModels(const std::vector& meshes, const std::vector& dracoMeshes, const std::vector>& dracoMaterialLists); + void rewriteAndBakeSceneModels(const QVector& meshes, const std::vector& dracoMeshes, const std::vector>& dracoMaterialLists); void replaceMeshNodeWithDraco(FBXNode& meshNode, const QByteArray& dracoMeshBytes, const std::vector& dracoMaterialList); }; diff --git a/libraries/baking/src/MaterialBaker.cpp b/libraries/baking/src/MaterialBaker.cpp index fbb17f0d01..9a1b1b2d24 100644 --- a/libraries/baking/src/MaterialBaker.cpp +++ b/libraries/baking/src/MaterialBaker.cpp @@ -258,9 +258,9 @@ void MaterialBaker::addTexture(const QString& materialName, image::TextureUsage: } }; -void MaterialBaker::setMaterials(const std::vector& materials, const QString& baseURL) { +void MaterialBaker::setMaterials(const QHash& materials, const QString& baseURL) { _materialResource = NetworkMaterialResourcePointer(new NetworkMaterialResource(), [](NetworkMaterialResource* ptr) { ptr->deleteLater(); }); - for (const auto& material : materials) { + for (auto& material : materials) { _materialResource->parsedMaterials.names.push_back(material.name.toStdString()); _materialResource->parsedMaterials.networkMaterials[material.name.toStdString()] = std::make_shared(material, baseURL); diff --git a/libraries/baking/src/MaterialBaker.h b/libraries/baking/src/MaterialBaker.h index 68efcfbd7e..33123cfc73 100644 --- a/libraries/baking/src/MaterialBaker.h +++ b/libraries/baking/src/MaterialBaker.h @@ -32,7 +32,7 @@ public: bool isURL() const { return _isURL; } QString getBakedMaterialData() const { return _bakedMaterialData; } - void setMaterials(const std::vector& materials, const QString& baseURL); + void setMaterials(const QHash& materials, const QString& baseURL); void setMaterials(const NetworkMaterialResourcePointer& materialResource); NetworkMaterialResourcePointer getNetworkMaterialResource() const { return _materialResource; } diff --git a/libraries/baking/src/ModelBaker.cpp b/libraries/baking/src/ModelBaker.cpp index 4e76dbb2d5..70290fe283 100644 --- a/libraries/baking/src/ModelBaker.cpp +++ b/libraries/baking/src/ModelBaker.cpp @@ -265,7 +265,7 @@ void ModelBaker::bakeSourceCopy() { return; } - if (!_hfmModel->materials.empty()) { + if (!_hfmModel->materials.isEmpty()) { _materialBaker = QSharedPointer( new MaterialBaker(_modelURL.fileName(), true, _bakedOutputDir), &MaterialBaker::deleteLater diff --git a/libraries/baking/src/OBJBaker.cpp b/libraries/baking/src/OBJBaker.cpp index d726dee897..a2d0ab1094 100644 --- a/libraries/baking/src/OBJBaker.cpp +++ b/libraries/baking/src/OBJBaker.cpp @@ -37,10 +37,10 @@ const QByteArray MESH = "Mesh"; void OBJBaker::bakeProcessedSource(const hfm::Model::Pointer& hfmModel, const std::vector& dracoMeshes, const std::vector>& dracoMaterialLists) { // Write OBJ Data as FBX tree nodes - createFBXNodeTree(_rootNode, hfmModel, dracoMeshes[0], dracoMaterialLists[0]); + createFBXNodeTree(_rootNode, hfmModel, dracoMeshes[0]); } -void OBJBaker::createFBXNodeTree(FBXNode& rootNode, const hfm::Model::Pointer& hfmModel, const hifi::ByteArray& dracoMesh, const std::vector& dracoMaterialList) { +void OBJBaker::createFBXNodeTree(FBXNode& rootNode, const hfm::Model::Pointer& hfmModel, const hifi::ByteArray& dracoMesh) { // Make all generated nodes children of rootNode rootNode.children = { FBXNode(), FBXNode(), FBXNode() }; FBXNode& globalSettingsNode = rootNode.children[0]; @@ -100,22 +100,19 @@ void OBJBaker::createFBXNodeTree(FBXNode& rootNode, const hfm::Model::Pointer& h } // Generating Objects node's child - Material node - - // Each material ID should only appear once thanks to deduplication in BuildDracoMeshTask, but we want to make sure they are created in the right order - std::unordered_map materialIDToIndex; - for (uint32_t materialIndex = 0; materialIndex < hfmModel->materials.size(); ++materialIndex) { - const auto& material = hfmModel->materials[materialIndex]; - materialIDToIndex[material.materialID] = materialIndex; - } - - // Create nodes for each material in the material list - for (const auto& dracoMaterial : dracoMaterialList) { - const QString materialID = QString(dracoMaterial); - const uint32_t materialIndex = materialIDToIndex[materialID]; - const auto& material = hfmModel->materials[materialIndex]; + auto& meshParts = hfmModel->meshes[0].parts; + for (auto& meshPart : meshParts) { FBXNode materialNode; materialNode.name = MATERIAL_NODE_NAME; - setMaterialNodeProperties(materialNode, material.materialID, material, hfmModel); + if (hfmModel->materials.size() == 1) { + // case when no material information is provided, OBJSerializer considers it as a single default material + for (auto& materialID : hfmModel->materials.keys()) { + setMaterialNodeProperties(materialNode, materialID, hfmModel); + } + } else { + setMaterialNodeProperties(materialNode, meshPart.materialID, hfmModel); + } + objectNode.children.append(materialNode); } @@ -156,10 +153,12 @@ void OBJBaker::createFBXNodeTree(FBXNode& rootNode, const hfm::Model::Pointer& h } // Set properties for material nodes -void OBJBaker::setMaterialNodeProperties(FBXNode& materialNode, const QString& materialName, const hfm::Material& material, const hfm::Model::Pointer& hfmModel) { +void OBJBaker::setMaterialNodeProperties(FBXNode& materialNode, QString material, const hfm::Model::Pointer& hfmModel) { auto materialID = nextNodeID(); _materialIDs.push_back(materialID); - materialNode.properties = { materialID, materialName, MESH }; + materialNode.properties = { materialID, material, MESH }; + + HFMMaterial currentMaterial = hfmModel->materials[material]; // Setting the hierarchy: Material -> Properties70 -> P -> Properties FBXNode properties70Node; @@ -171,7 +170,7 @@ void OBJBaker::setMaterialNodeProperties(FBXNode& materialNode, const QString& m pNodeDiffuseColor.name = P_NODE_NAME; pNodeDiffuseColor.properties.append({ "DiffuseColor", "Color", "", "A", - material.diffuseColor[0], material.diffuseColor[1], material.diffuseColor[2] + currentMaterial.diffuseColor[0], currentMaterial.diffuseColor[1], currentMaterial.diffuseColor[2] }); } properties70Node.children.append(pNodeDiffuseColor); @@ -182,7 +181,7 @@ void OBJBaker::setMaterialNodeProperties(FBXNode& materialNode, const QString& m pNodeSpecularColor.name = P_NODE_NAME; pNodeSpecularColor.properties.append({ "SpecularColor", "Color", "", "A", - material.specularColor[0], material.specularColor[1], material.specularColor[2] + currentMaterial.specularColor[0], currentMaterial.specularColor[1], currentMaterial.specularColor[2] }); } properties70Node.children.append(pNodeSpecularColor); @@ -193,7 +192,7 @@ void OBJBaker::setMaterialNodeProperties(FBXNode& materialNode, const QString& m pNodeShininess.name = P_NODE_NAME; pNodeShininess.properties.append({ "Shininess", "Number", "", "A", - material.shininess + currentMaterial.shininess }); } properties70Node.children.append(pNodeShininess); @@ -204,7 +203,7 @@ void OBJBaker::setMaterialNodeProperties(FBXNode& materialNode, const QString& m pNodeOpacity.name = P_NODE_NAME; pNodeOpacity.properties.append({ "Opacity", "Number", "", "A", - material.opacity + currentMaterial.opacity }); } properties70Node.children.append(pNodeOpacity); diff --git a/libraries/baking/src/OBJBaker.h b/libraries/baking/src/OBJBaker.h index 778b4da341..55adec5786 100644 --- a/libraries/baking/src/OBJBaker.h +++ b/libraries/baking/src/OBJBaker.h @@ -27,8 +27,8 @@ protected: virtual void bakeProcessedSource(const hfm::Model::Pointer& hfmModel, const std::vector& dracoMeshes, const std::vector>& dracoMaterialLists) override; private: - void createFBXNodeTree(FBXNode& rootNode, const hfm::Model::Pointer& hfmModel, const hifi::ByteArray& dracoMesh, const std::vector& dracoMaterialList); - void setMaterialNodeProperties(FBXNode& materialNode, const QString& materialName, const hfm::Material& material, const hfm::Model::Pointer& hfmModel); + void createFBXNodeTree(FBXNode& rootNode, const hfm::Model::Pointer& hfmModel, const hifi::ByteArray& dracoMesh); + void setMaterialNodeProperties(FBXNode& materialNode, QString material, const hfm::Model::Pointer& hfmModel); NodeID nextNodeID() { return _nodeID++; } NodeID _nodeID { 0 }; diff --git a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp index d88ed2fef0..fb2cf01580 100644 --- a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp @@ -282,7 +282,7 @@ bool RenderableModelEntityItem::findDetailedParabolaIntersection(const glm::vec3 } void RenderableModelEntityItem::fetchCollisionGeometryResource() { - _collisionGeometryResource = DependencyManager::get()->getCollisionModelResource(getCollisionShapeURL()); + _collisionGeometryResource = DependencyManager::get()->getCollisionGeometryResource(getCollisionShapeURL()); } bool RenderableModelEntityItem::unableToLoadCollisionShape() { @@ -357,6 +357,7 @@ bool RenderableModelEntityItem::isReadyToComputeShape() const { void RenderableModelEntityItem::computeShapeInfo(ShapeInfo& shapeInfo) { const uint32_t TRIANGLE_STRIDE = 3; + const uint32_t QUAD_STRIDE = 4; ShapeType type = getShapeType(); @@ -379,35 +380,59 @@ void RenderableModelEntityItem::computeShapeInfo(ShapeInfo& shapeInfo) { ShapeInfo::PointCollection& pointCollection = shapeInfo.getPointCollection(); pointCollection.clear(); - - size_t numParts = 0; - for (const HFMMesh& mesh : collisionGeometry.meshes) { - numParts += mesh.triangleListMesh.parts.size(); - } - pointCollection.reserve(numParts); + uint32_t i = 0; // the way OBJ files get read, each section under a "g" line is its own meshPart. We only expect // to find one actual "mesh" (with one or more meshParts in it), but we loop over the meshes, just in case. - for (const HFMMesh& mesh : collisionGeometry.meshes) { - const hfm::TriangleListMesh& triangleListMesh = mesh.triangleListMesh; + foreach (const HFMMesh& mesh, collisionGeometry.meshes) { // each meshPart is a convex hull - for (const glm::ivec2& part : triangleListMesh.parts) { + foreach (const HFMMeshPart &meshPart, mesh.parts) { + pointCollection.push_back(QVector()); + ShapeInfo::PointList& pointsInPart = pointCollection[i]; + // run through all the triangles and (uniquely) add each point to the hull - - pointCollection.emplace_back(); - ShapeInfo::PointList& pointsInPart = pointCollection.back(); - - uint32_t numIndices = (uint32_t)part.y; + uint32_t numIndices = (uint32_t)meshPart.triangleIndices.size(); // TODO: assert rather than workaround after we start sanitizing HFMMesh higher up //assert(numIndices % TRIANGLE_STRIDE == 0); numIndices -= numIndices % TRIANGLE_STRIDE; // WORKAROUND lack of sanity checking in FBXSerializer - uint32_t indexStart = (uint32_t)part.x; - uint32_t indexEnd = indexStart + numIndices; - for (uint32_t j = indexStart; j < indexEnd; ++j) { - // NOTE: It seems odd to skip vertices when initializing a btConvexHullShape, but let's keep the behavior similar to the old behavior for now - glm::vec3 point = triangleListMesh.vertices[triangleListMesh.indices[j]]; - if (std::find(pointsInPart.cbegin(), pointsInPart.cend(), point) == pointsInPart.cend()) { - pointsInPart.push_back(point); + + for (uint32_t j = 0; j < numIndices; j += TRIANGLE_STRIDE) { + glm::vec3 p0 = mesh.vertices[meshPart.triangleIndices[j]]; + glm::vec3 p1 = mesh.vertices[meshPart.triangleIndices[j + 1]]; + glm::vec3 p2 = mesh.vertices[meshPart.triangleIndices[j + 2]]; + if (!pointsInPart.contains(p0)) { + pointsInPart << p0; + } + if (!pointsInPart.contains(p1)) { + pointsInPart << p1; + } + if (!pointsInPart.contains(p2)) { + pointsInPart << p2; + } + } + + // run through all the quads and (uniquely) add each point to the hull + numIndices = (uint32_t)meshPart.quadIndices.size(); + // TODO: assert rather than workaround after we start sanitizing HFMMesh higher up + //assert(numIndices % QUAD_STRIDE == 0); + numIndices -= numIndices % QUAD_STRIDE; // WORKAROUND lack of sanity checking in FBXSerializer + + for (uint32_t j = 0; j < numIndices; j += QUAD_STRIDE) { + glm::vec3 p0 = mesh.vertices[meshPart.quadIndices[j]]; + glm::vec3 p1 = mesh.vertices[meshPart.quadIndices[j + 1]]; + glm::vec3 p2 = mesh.vertices[meshPart.quadIndices[j + 2]]; + glm::vec3 p3 = mesh.vertices[meshPart.quadIndices[j + 3]]; + if (!pointsInPart.contains(p0)) { + pointsInPart << p0; + } + if (!pointsInPart.contains(p1)) { + pointsInPart << p1; + } + if (!pointsInPart.contains(p2)) { + pointsInPart << p2; + } + if (!pointsInPart.contains(p3)) { + pointsInPart << p3; } } @@ -416,6 +441,7 @@ void RenderableModelEntityItem::computeShapeInfo(ShapeInfo& shapeInfo) { pointCollection.pop_back(); continue; } + ++i; } } @@ -430,8 +456,8 @@ void RenderableModelEntityItem::computeShapeInfo(ShapeInfo& shapeInfo) { // multiply each point by scale before handing the point-set off to the physics engine. // also determine the extents of the collision model. glm::vec3 registrationOffset = dimensions * (ENTITY_ITEM_DEFAULT_REGISTRATION_POINT - getRegistrationPoint()); - for (size_t i = 0; i < pointCollection.size(); i++) { - for (size_t j = 0; j < pointCollection[i].size(); j++) { + for (int32_t i = 0; i < pointCollection.size(); i++) { + for (int32_t j = 0; j < pointCollection[i].size(); j++) { // back compensate for registration so we can apply that offset to the shapeInfo later pointCollection[i][j] = scaleToFit * (pointCollection[i][j] + model->getOffset()) - registrationOffset; } @@ -445,63 +471,46 @@ void RenderableModelEntityItem::computeShapeInfo(ShapeInfo& shapeInfo) { model->updateGeometry(); // compute meshPart local transforms + QVector localTransforms; const HFMModel& hfmModel = model->getHFMModel(); + int numHFMMeshes = hfmModel.meshes.size(); + int totalNumVertices = 0; glm::vec3 dimensions = getScaledDimensions(); glm::mat4 invRegistraionOffset = glm::translate(dimensions * (getRegistrationPoint() - ENTITY_ITEM_DEFAULT_REGISTRATION_POINT)); - - ShapeInfo::TriangleIndices& triangleIndices = shapeInfo.getTriangleIndices(); - triangleIndices.clear(); - - Extents extents; - int32_t shapeCount = 0; - int32_t instanceIndex = 0; - - // NOTE: Each pointCollection corresponds to a mesh. Therefore, we should have one pointCollection per mesh instance - // A mesh instance is a unique combination of mesh/transform. For every mesh instance, there are as many shapes as there are parts for that mesh. - // We assume the shapes are grouped by mesh instance, and the group contains one of each mesh part. - uint32_t numInstances = 0; - std::vector>> shapesPerInstancePerMesh; - shapesPerInstancePerMesh.resize(hfmModel.meshes.size()); - for (uint32_t shapeIndex = 0; shapeIndex < hfmModel.shapes.size();) { - const auto& shape = hfmModel.shapes[shapeIndex]; - uint32_t meshIndex = shape.mesh; - const auto& mesh = hfmModel.meshes[meshIndex]; - uint32_t numMeshParts = (uint32_t)mesh.parts.size(); - assert(numMeshParts != 0); - - auto& shapesPerInstance = shapesPerInstancePerMesh[meshIndex]; - shapesPerInstance.emplace_back(); - - auto& shapes = shapesPerInstance.back(); - shapes.resize(numMeshParts); - std::iota(shapes.begin(), shapes.end(), shapeIndex); - - shapeIndex += numMeshParts; - ++numInstances; + for (int i = 0; i < numHFMMeshes; i++) { + const HFMMesh& mesh = hfmModel.meshes.at(i); + if (mesh.clusters.size() > 0) { + const HFMCluster& cluster = mesh.clusters.at(0); + auto jointMatrix = model->getRig().getJointTransform(cluster.jointIndex); + // we backtranslate by the registration offset so we can apply that offset to the shapeInfo later + localTransforms.push_back(invRegistraionOffset * jointMatrix * cluster.inverseBindMatrix); + } else { + localTransforms.push_back(invRegistraionOffset); + } + totalNumVertices += mesh.vertices.size(); } - - const uint32_t MAX_ALLOWED_MESH_COUNT = 1000; - if (numInstances > MAX_ALLOWED_MESH_COUNT) { - // too many will cause the deadlock timer to throw... - qWarning() << "model" << getModelURL() << "has too many collision meshes" << numInstances << "and will collide as a box."; + const int32_t MAX_VERTICES_PER_STATIC_MESH = 1e6; + if (totalNumVertices > MAX_VERTICES_PER_STATIC_MESH) { + qWarning() << "model" << getModelURL() << "has too many vertices" << totalNumVertices << "and will collide as a box."; shapeInfo.setParams(SHAPE_TYPE_BOX, 0.5f * dimensions); return; } - size_t totalNumVertices = 0; - for (const auto& shapesPerInstance : shapesPerInstancePerMesh) { - for (const auto& instanceShapes : shapesPerInstance) { - const uint32_t firstShapeIndex = instanceShapes.front(); - const auto& firstShape = hfmModel.shapes[firstShapeIndex]; - const auto& mesh = hfmModel.meshes[firstShape.mesh]; - const auto& triangleListMesh = mesh.triangleListMesh; - // Added once per instance per mesh - totalNumVertices += triangleListMesh.vertices.size(); + std::vector> meshes; + if (type == SHAPE_TYPE_SIMPLE_COMPOUND) { + auto& hfmMeshes = _collisionGeometryResource->getHFMModel().meshes; + meshes.reserve(hfmMeshes.size()); + for (auto& hfmMesh : hfmMeshes) { + meshes.push_back(hfmMesh._mesh); } + } else { + meshes = model->getGeometry()->getMeshes(); } - const size_t MAX_VERTICES_PER_STATIC_MESH = 1e6; - if (totalNumVertices > MAX_VERTICES_PER_STATIC_MESH) { - qWarning() << "model" << getModelURL() << "has too many vertices" << totalNumVertices << "and will collide as a box."; + int32_t numMeshes = (int32_t)(meshes.size()); + + const int MAX_ALLOWED_MESH_COUNT = 1000; + if (numMeshes > MAX_ALLOWED_MESH_COUNT) { + // too many will cause the deadlock timer to throw... shapeInfo.setParams(SHAPE_TYPE_BOX, 0.5f * dimensions); return; } @@ -509,118 +518,169 @@ void RenderableModelEntityItem::computeShapeInfo(ShapeInfo& shapeInfo) { ShapeInfo::PointCollection& pointCollection = shapeInfo.getPointCollection(); pointCollection.clear(); if (type == SHAPE_TYPE_SIMPLE_COMPOUND) { - pointCollection.resize(numInstances); + pointCollection.resize(numMeshes); } else { pointCollection.resize(1); } - for (uint32_t meshIndex = 0; meshIndex < hfmModel.meshes.size(); ++meshIndex) { - const auto& mesh = hfmModel.meshes[meshIndex]; - const auto& triangleListMesh = mesh.triangleListMesh; - const auto& vertices = triangleListMesh.vertices; - const auto& indices = triangleListMesh.indices; - const std::vector& parts = triangleListMesh.parts; + ShapeInfo::TriangleIndices& triangleIndices = shapeInfo.getTriangleIndices(); + triangleIndices.clear(); - const auto& shapesPerInstance = shapesPerInstancePerMesh[meshIndex]; - for (const std::vector& instanceShapes : shapesPerInstance) { - ShapeInfo::PointList& points = pointCollection[instanceIndex]; + Extents extents; + int32_t meshCount = 0; + int32_t pointListIndex = 0; + for (auto& mesh : meshes) { + if (!mesh) { + continue; + } + const gpu::BufferView& vertices = mesh->getVertexBuffer(); + const gpu::BufferView& indices = mesh->getIndexBuffer(); + const gpu::BufferView& parts = mesh->getPartBuffer(); - // reserve room - int32_t sizeToReserve = (int32_t)(vertices.size()); - if (type == SHAPE_TYPE_SIMPLE_COMPOUND) { - // a list of points for each instance - instanceIndex++; - } else { - // only one list of points - sizeToReserve += (int32_t)((gpu::Size)points.size()); - } - points.reserve(sizeToReserve); - - // get mesh instance transform - const uint32_t meshIndexOffset = (uint32_t)points.size(); - const uint32_t instanceShapeIndexForTransform = instanceShapes.front(); - const auto& instanceShapeForTransform = hfmModel.shapes[instanceShapeIndexForTransform]; - glm::mat4 localTransform; - if (instanceShapeForTransform.joint != hfm::UNDEFINED_KEY) { - auto jointMatrix = model->getRig().getJointTransform(instanceShapeForTransform.joint); - // we backtranslate by the registration offset so we can apply that offset to the shapeInfo later - if (instanceShapeForTransform.skinDeformer != hfm::UNDEFINED_KEY) { - const auto& skinDeformer = hfmModel.skinDeformers[instanceShapeForTransform.skinDeformer]; - glm::mat4 inverseBindMatrix; - if (!skinDeformer.clusters.empty()) { - const auto& cluster = skinDeformer.clusters.back(); - inverseBindMatrix = cluster.inverseBindMatrix; - } - localTransform = invRegistraionOffset * jointMatrix * inverseBindMatrix; - } else { - localTransform = invRegistraionOffset * jointMatrix; - } - } else { - localTransform = invRegistraionOffset; - } + ShapeInfo::PointList& points = pointCollection[pointListIndex]; - // copy points - auto vertexItr = vertices.cbegin(); - while (vertexItr != vertices.cend()) { - glm::vec3 point = extractTranslation(localTransform * glm::translate(*vertexItr)); - points.push_back(point); - ++vertexItr; - } - for (const auto& instanceShapeIndex : instanceShapes) { - const auto& instanceShape = hfmModel.shapes[instanceShapeIndex]; - extents.addExtents(instanceShape.transformedExtents); - } + // reserve room + int32_t sizeToReserve = (int32_t)(vertices.getNumElements()); + if (type == SHAPE_TYPE_SIMPLE_COMPOUND) { + // a list of points for each mesh + pointListIndex++; + } else { + // only one list of points + sizeToReserve += (int32_t)((gpu::Size)points.size()); + } + points.reserve(sizeToReserve); - if (type == SHAPE_TYPE_STATIC_MESH) { - // copy into triangleIndices - triangleIndices.reserve((int32_t)((gpu::Size)(triangleIndices.size()) + indices.size())); - auto partItr = parts.cbegin(); - while (partItr != parts.cend()) { - auto numIndices = partItr->y; + // copy points + uint32_t meshIndexOffset = (uint32_t)points.size(); + const glm::mat4& localTransform = localTransforms[meshCount]; + gpu::BufferView::Iterator vertexItr = vertices.cbegin(); + while (vertexItr != vertices.cend()) { + glm::vec3 point = extractTranslation(localTransform * glm::translate(*vertexItr)); + points.push_back(point); + extents.addPoint(point); + ++vertexItr; + } + + if (type == SHAPE_TYPE_STATIC_MESH) { + // copy into triangleIndices + triangleIndices.reserve((int32_t)((gpu::Size)(triangleIndices.size()) + indices.getNumElements())); + gpu::BufferView::Iterator partItr = parts.cbegin(); + while (partItr != parts.cend()) { + auto numIndices = partItr->_numIndices; + if (partItr->_topology == graphics::Mesh::TRIANGLES) { // TODO: assert rather than workaround after we start sanitizing HFMMesh higher up //assert(numIndices % TRIANGLE_STRIDE == 0); numIndices -= numIndices % TRIANGLE_STRIDE; // WORKAROUND lack of sanity checking in FBXSerializer - auto indexItr = indices.cbegin() + partItr->x; + + auto indexItr = indices.cbegin() + partItr->_startIndex; auto indexEnd = indexItr + numIndices; while (indexItr != indexEnd) { triangleIndices.push_back(*indexItr + meshIndexOffset); ++indexItr; } - ++partItr; + } else if (partItr->_topology == graphics::Mesh::TRIANGLE_STRIP) { + // TODO: resurrect assert after we start sanitizing HFMMesh higher up + //assert(numIndices > 2); + + uint32_t approxNumIndices = TRIANGLE_STRIDE * numIndices; + if (approxNumIndices > (uint32_t)(triangleIndices.capacity() - triangleIndices.size())) { + // we underestimated the final size of triangleIndices so we pre-emptively expand it + triangleIndices.reserve(triangleIndices.size() + approxNumIndices); + } + + auto indexItr = indices.cbegin() + partItr->_startIndex; + auto indexEnd = indexItr + (numIndices - 2); + + // first triangle uses the first three indices + triangleIndices.push_back(*(indexItr++) + meshIndexOffset); + triangleIndices.push_back(*(indexItr++) + meshIndexOffset); + triangleIndices.push_back(*(indexItr++) + meshIndexOffset); + + // the rest use previous and next index + uint32_t triangleCount = 1; + while (indexItr != indexEnd) { + if ((*indexItr) != graphics::Mesh::PRIMITIVE_RESTART_INDEX) { + if (triangleCount % 2 == 0) { + // even triangles use first two indices in order + triangleIndices.push_back(*(indexItr - 2) + meshIndexOffset); + triangleIndices.push_back(*(indexItr - 1) + meshIndexOffset); + } else { + // odd triangles swap order of first two indices + triangleIndices.push_back(*(indexItr - 1) + meshIndexOffset); + triangleIndices.push_back(*(indexItr - 2) + meshIndexOffset); + } + triangleIndices.push_back(*indexItr + meshIndexOffset); + ++triangleCount; + } + ++indexItr; + } } - } else if (type == SHAPE_TYPE_SIMPLE_COMPOUND) { - // for each mesh copy unique part indices, separated by special bogus (flag) index values - auto partItr = parts.cbegin(); - while (partItr != parts.cend()) { - // collect unique list of indices for this part - std::set uniqueIndices; - auto numIndices = partItr->y; + ++partItr; + } + } else if (type == SHAPE_TYPE_SIMPLE_COMPOUND) { + // for each mesh copy unique part indices, separated by special bogus (flag) index values + gpu::BufferView::Iterator partItr = parts.cbegin(); + while (partItr != parts.cend()) { + // collect unique list of indices for this part + std::set uniqueIndices; + auto numIndices = partItr->_numIndices; + if (partItr->_topology == graphics::Mesh::TRIANGLES) { // TODO: assert rather than workaround after we start sanitizing HFMMesh higher up //assert(numIndices% TRIANGLE_STRIDE == 0); numIndices -= numIndices % TRIANGLE_STRIDE; // WORKAROUND lack of sanity checking in FBXSerializer - auto indexItr = indices.cbegin() + partItr->x; + + auto indexItr = indices.cbegin() + partItr->_startIndex; auto indexEnd = indexItr + numIndices; while (indexItr != indexEnd) { uniqueIndices.insert(*indexItr); ++indexItr; } + } else if (partItr->_topology == graphics::Mesh::TRIANGLE_STRIP) { + // TODO: resurrect assert after we start sanitizing HFMMesh higher up + //assert(numIndices > TRIANGLE_STRIDE - 1); - // store uniqueIndices in triangleIndices - triangleIndices.reserve(triangleIndices.size() + (int32_t)uniqueIndices.size()); - for (auto index : uniqueIndices) { - triangleIndices.push_back(index); + auto indexItr = indices.cbegin() + partItr->_startIndex; + auto indexEnd = indexItr + (numIndices - 2); + + // first triangle uses the first three indices + uniqueIndices.insert(*(indexItr++)); + uniqueIndices.insert(*(indexItr++)); + uniqueIndices.insert(*(indexItr++)); + + // the rest use previous and next index + uint32_t triangleCount = 1; + while (indexItr != indexEnd) { + if ((*indexItr) != graphics::Mesh::PRIMITIVE_RESTART_INDEX) { + if (triangleCount % 2 == 0) { + // EVEN triangles use first two indices in order + uniqueIndices.insert(*(indexItr - 2)); + uniqueIndices.insert(*(indexItr - 1)); + } else { + // ODD triangles swap order of first two indices + uniqueIndices.insert(*(indexItr - 1)); + uniqueIndices.insert(*(indexItr - 2)); + } + uniqueIndices.insert(*indexItr); + ++triangleCount; + } + ++indexItr; } - // flag end of part - triangleIndices.push_back(END_OF_MESH_PART); - - ++partItr; } - // flag end of mesh - triangleIndices.push_back(END_OF_MESH); - } - } - ++shapeCount; + // store uniqueIndices in triangleIndices + triangleIndices.reserve(triangleIndices.size() + (int32_t)uniqueIndices.size()); + for (auto index : uniqueIndices) { + triangleIndices.push_back(index); + } + // flag end of part + triangleIndices.push_back(END_OF_MESH_PART); + + ++partItr; + } + // flag end of mesh + triangleIndices.push_back(END_OF_MESH); + } + ++meshCount; } // scale and shift @@ -632,7 +692,7 @@ void RenderableModelEntityItem::computeShapeInfo(ShapeInfo& shapeInfo) { } } for (auto points : pointCollection) { - for (size_t i = 0; i < points.size(); ++i) { + for (int32_t i = 0; i < points.size(); ++i) { points[i] = (points[i] * scaleToFit); } } @@ -1391,7 +1451,7 @@ void ModelEntityRenderer::doRenderUpdateSynchronousTyped(const ScenePointer& sce } } - if (!_texturesLoaded && model->getNetworkModel() && model->getNetworkModel()->areTexturesLoaded()) { + if (!_texturesLoaded && model->getGeometry() && model->getGeometry()->areTexturesLoaded()) { withWriteLock([&] { _texturesLoaded = true; }); diff --git a/libraries/entities-renderer/src/RenderableModelEntityItem.h b/libraries/entities-renderer/src/RenderableModelEntityItem.h index 0634b6ec59..f42f0aec94 100644 --- a/libraries/entities-renderer/src/RenderableModelEntityItem.h +++ b/libraries/entities-renderer/src/RenderableModelEntityItem.h @@ -121,7 +121,7 @@ private: bool readyToAnimate() const; void fetchCollisionGeometryResource(); - ModelResource::Pointer _collisionGeometryResource; + GeometryResource::Pointer _collisionGeometryResource; std::vector _jointMap; QVariantMap _originalTextures; bool _jointMapCompleted { false }; diff --git a/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp b/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp index 2c344f663a..f34eb85230 100644 --- a/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp @@ -200,7 +200,7 @@ float importanceSample3DDimension(float startDim) { } ParticleEffectEntityRenderer::CpuParticle ParticleEffectEntityRenderer::createParticle(uint64_t now, const Transform& baseTransform, const particle::Properties& particleProperties, - const ShapeType& shapeType, const ModelResource::Pointer& geometryResource, + const ShapeType& shapeType, const GeometryResource::Pointer& geometryResource, const TriangleInfo& triangleInfo) { CpuParticle particle; @@ -385,7 +385,7 @@ void ParticleEffectEntityRenderer::stepSimulation() { particle::Properties particleProperties; ShapeType shapeType; - ModelResource::Pointer geometryResource; + GeometryResource::Pointer geometryResource; withReadLock([&] { particleProperties = _particleProperties; shapeType = _shapeType; @@ -488,7 +488,7 @@ void ParticleEffectEntityRenderer::fetchGeometryResource() { if (hullURL.isEmpty()) { _geometryResource.reset(); } else { - _geometryResource = DependencyManager::get()->getCollisionModelResource(hullURL); + _geometryResource = DependencyManager::get()->getCollisionGeometryResource(hullURL); } } @@ -496,7 +496,7 @@ void ParticleEffectEntityRenderer::fetchGeometryResource() { void ParticleEffectEntityRenderer::computeTriangles(const hfm::Model& hfmModel) { PROFILE_RANGE(render, __FUNCTION__); - uint32_t numberOfMeshes = (uint32_t)hfmModel.meshes.size(); + int numberOfMeshes = hfmModel.meshes.size(); _hasComputedTriangles = true; _triangleInfo.triangles.clear(); @@ -506,11 +506,11 @@ void ParticleEffectEntityRenderer::computeTriangles(const hfm::Model& hfmModel) float minArea = FLT_MAX; AABox bounds; - for (uint32_t i = 0; i < numberOfMeshes; i++) { + for (int i = 0; i < numberOfMeshes; i++) { const HFMMesh& mesh = hfmModel.meshes.at(i); - const uint32_t numberOfParts = (uint32_t)mesh.parts.size(); - for (uint32_t j = 0; j < numberOfParts; j++) { + const int numberOfParts = mesh.parts.size(); + for (int j = 0; j < numberOfParts; j++) { const HFMMeshPart& part = mesh.parts.at(j); const int INDICES_PER_TRIANGLE = 3; diff --git a/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.h b/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.h index d585104f5c..cc907f2b1d 100644 --- a/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.h +++ b/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.h @@ -89,7 +89,7 @@ private: } _triangleInfo; static CpuParticle createParticle(uint64_t now, const Transform& baseTransform, const particle::Properties& particleProperties, - const ShapeType& shapeType, const ModelResource::Pointer& geometryResource, + const ShapeType& shapeType, const GeometryResource::Pointer& geometryResource, const TriangleInfo& triangleInfo); void stepSimulation(); @@ -108,7 +108,7 @@ private: QString _compoundShapeURL; void fetchGeometryResource(); - ModelResource::Pointer _geometryResource; + GeometryResource::Pointer _geometryResource; NetworkTexturePointer _networkTexture; ScenePointer _scene; diff --git a/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.cpp b/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.cpp index 5370c17275..1555604604 100644 --- a/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.cpp @@ -1429,13 +1429,14 @@ void RenderablePolyVoxEntityItem::computeShapeInfoWorker() { QtConcurrent::run([entity, voxelSurfaceStyle, voxelVolumeSize, mesh] { auto polyVoxEntity = std::static_pointer_cast(entity); - ShapeInfo::PointCollection pointCollection; + QVector> pointCollection; AABox box; glm::mat4 vtoM = std::static_pointer_cast(entity)->voxelToLocalMatrix(); if (voxelSurfaceStyle == PolyVoxEntityItem::SURFACE_MARCHING_CUBES || voxelSurfaceStyle == PolyVoxEntityItem::SURFACE_EDGED_MARCHING_CUBES) { // pull each triangle in the mesh into a polyhedron which can be collided with + unsigned int i = 0; const gpu::BufferView& vertexBufferView = mesh->getVertexBuffer(); const gpu::BufferView& indexBufferView = mesh->getIndexBuffer(); @@ -1464,16 +1465,19 @@ void RenderablePolyVoxEntityItem::computeShapeInfoWorker() { box += p2Model; box += p3Model; - ShapeInfo::PointList pointsInPart; - pointsInPart.push_back(p0Model); - pointsInPart.push_back(p1Model); - pointsInPart.push_back(p2Model); - pointsInPart.push_back(p3Model); - - // add points to a new convex hull - pointCollection.push_back(pointsInPart); + QVector pointsInPart; + pointsInPart << p0Model; + pointsInPart << p1Model; + pointsInPart << p2Model; + pointsInPart << p3Model; + // add next convex hull + QVector newMeshPoints; + pointCollection << newMeshPoints; + // add points to the new convex hull + pointCollection[i++] << pointsInPart; } } else { + unsigned int i = 0; polyVoxEntity->forEachVoxelValue(voxelVolumeSize, [&](const ivec3& v, uint8_t value) { if (value > 0) { const auto& x = v.x; @@ -1492,7 +1496,7 @@ void RenderablePolyVoxEntityItem::computeShapeInfoWorker() { return; } - ShapeInfo::PointList pointsInPart; + QVector pointsInPart; float offL = -0.5f; float offH = 0.5f; @@ -1519,17 +1523,20 @@ void RenderablePolyVoxEntityItem::computeShapeInfoWorker() { box += p110; box += p111; - pointsInPart.push_back(p000); - pointsInPart.push_back(p001); - pointsInPart.push_back(p010); - pointsInPart.push_back(p011); - pointsInPart.push_back(p100); - pointsInPart.push_back(p101); - pointsInPart.push_back(p110); - pointsInPart.push_back(p111); + pointsInPart << p000; + pointsInPart << p001; + pointsInPart << p010; + pointsInPart << p011; + pointsInPart << p100; + pointsInPart << p101; + pointsInPart << p110; + pointsInPart << p111; - // add points to a new convex hull - pointCollection.push_back(pointsInPart); + // add next convex hull + QVector newMeshPoints; + pointCollection << newMeshPoints; + // add points to the new convex hull + pointCollection[i++] << pointsInPart; } }); } @@ -1539,7 +1546,7 @@ void RenderablePolyVoxEntityItem::computeShapeInfoWorker() { void RenderablePolyVoxEntityItem::setCollisionPoints(ShapeInfo::PointCollection pointCollection, AABox box) { // this catches the payload from computeShapeInfoWorker - if (pointCollection.empty()) { + if (pointCollection.isEmpty()) { EntityItem::computeShapeInfo(_shapeInfo); withWriteLock([&] { _shapeReady = true; diff --git a/libraries/entities/src/ZoneEntityItem.cpp b/libraries/entities/src/ZoneEntityItem.cpp index 1ddc972029..898a6d4b98 100644 --- a/libraries/entities/src/ZoneEntityItem.cpp +++ b/libraries/entities/src/ZoneEntityItem.cpp @@ -350,7 +350,7 @@ bool ZoneEntityItem::findDetailedParabolaIntersection(const glm::vec3& origin, c } bool ZoneEntityItem::contains(const glm::vec3& point) const { - ModelResource::Pointer resource = _shapeResource; + GeometryResource::Pointer resource = _shapeResource; if (_shapeType == SHAPE_TYPE_COMPOUND && resource) { if (resource->isLoaded()) { const HFMModel& hfmModel = resource->getHFMModel(); @@ -467,7 +467,7 @@ void ZoneEntityItem::fetchCollisionGeometryResource() { if (hullURL.isEmpty()) { _shapeResource.reset(); } else { - _shapeResource = DependencyManager::get()->getCollisionModelResource(hullURL); + _shapeResource = DependencyManager::get()->getCollisionGeometryResource(hullURL); } } diff --git a/libraries/entities/src/ZoneEntityItem.h b/libraries/entities/src/ZoneEntityItem.h index 295727d657..8ec3ea12b4 100644 --- a/libraries/entities/src/ZoneEntityItem.h +++ b/libraries/entities/src/ZoneEntityItem.h @@ -173,7 +173,7 @@ protected: static bool _zonesArePickable; void fetchCollisionGeometryResource(); - ModelResource::Pointer _shapeResource; + GeometryResource::Pointer _shapeResource; }; diff --git a/libraries/fbx/src/FBXSerializer.cpp b/libraries/fbx/src/FBXSerializer.cpp index d7c05e29de..100f6ee98e 100644 --- a/libraries/fbx/src/FBXSerializer.cpp +++ b/libraries/fbx/src/FBXSerializer.cpp @@ -20,7 +20,6 @@ #include #include -#include // TOOL: Uncomment the following line to enable the filtering of all the unkwnon fields of a node so we can break point easily while loading a model with problems... //#define DEBUG_FBXSERIALIZER @@ -146,9 +145,8 @@ public: bool isLimbNode; // is this FBXModel transform is a "LimbNode" i.e. a joint }; - glm::mat4 getGlobalTransform(const QMultiMap& _connectionParentMap, - const QHash& fbxModels, QString nodeID, bool mixamoHack, const QString& url) { + const QHash& fbxModels, QString nodeID, bool mixamoHack, const QString& url) { glm::mat4 globalTransform; QVector visitedNodes; // Used to prevent following a cycle while (!nodeID.isNull()) { @@ -168,11 +166,12 @@ glm::mat4 getGlobalTransform(const QMultiMap& _connectionParen } QList parentIDs = _connectionParentMap.values(nodeID); nodeID = QString(); - foreach(const QString& parentID, parentIDs) { + foreach (const QString& parentID, parentIDs) { if (visitedNodes.contains(parentID)) { qCWarning(modelformat) << "Ignoring loop detected in FBX connection map for" << url; continue; } + if (fbxModels.contains(parentID)) { nodeID = parentID; break; @@ -182,21 +181,6 @@ glm::mat4 getGlobalTransform(const QMultiMap& _connectionParen return globalTransform; } -std::vector getModelIDsForMeshID(const QString& meshID, const QHash& fbxModels, const QMultiMap& _connectionParentMap) { - std::vector modelsForMesh; - if (fbxModels.contains(meshID)) { - modelsForMesh.push_back(meshID); - } else { - // This mesh may have more than one parent model, with different material and transform, representing a different instance of the mesh - for (const auto& parentID : _connectionParentMap.values(meshID)) { - if (fbxModels.contains(parentID)) { - modelsForMesh.push_back(parentID); - } - } - } - return modelsForMesh; -} - class ExtractedBlendshape { public: QString id; @@ -420,7 +404,7 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const QVector blendshapes; QHash fbxModels; - QHash fbxClusters; + QHash clusters; QHash animationCurves; QHash typeFlags; @@ -531,8 +515,8 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const if (object.properties.at(2) == "Mesh") { meshes.insert(getID(object.properties), extractMesh(object, meshIndex, deduplicateIndices)); } else { // object.properties.at(2) == "Shape" - ExtractedBlendshape blendshape = { getID(object.properties), extractBlendshape(object) }; - blendshapes.append(blendshape); + ExtractedBlendshape extracted = { getID(object.properties), extractBlendshape(object) }; + blendshapes.append(extracted); } } else if (object.name == "Model") { QString name = getModelName(object.properties); @@ -706,8 +690,8 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const // add the blendshapes included in the model, if any if (mesh) { - foreach (const ExtractedBlendshape& blendshape, blendshapes) { - addBlendshapes(blendshape, blendshapeIndices.values(blendshape.id.toLatin1()), *mesh); + foreach (const ExtractedBlendshape& extracted, blendshapes) { + addBlendshapes(extracted, blendshapeIndices.values(extracted.id.toLatin1()), *mesh); } } @@ -1074,9 +1058,9 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const } } - // skip empty fbxClusters + // skip empty clusters if (cluster.indices.size() > 0 && cluster.weights.size() > 0) { - fbxClusters.insert(getID(object.properties), cluster); + clusters.insert(getID(object.properties), cluster); } } else if (object.properties.last() == "BlendShapeChannel") { @@ -1230,11 +1214,11 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const } // assign the blendshapes to their corresponding meshes - foreach (const ExtractedBlendshape& blendshape, blendshapes) { - QString blendshapeChannelID = _connectionParentMap.value(blendshape.id); + foreach (const ExtractedBlendshape& extracted, blendshapes) { + QString blendshapeChannelID = _connectionParentMap.value(extracted.id); QString blendshapeID = _connectionParentMap.value(blendshapeChannelID); QString meshID = _connectionParentMap.value(blendshapeID); - addBlendshapes(blendshape, blendshapeChannelIndices.values(blendshapeChannelID), meshes[meshID]); + addBlendshapes(extracted, blendshapeChannelIndices.values(blendshapeChannelID), meshes[meshID]); } // get offset transform from mapping @@ -1249,13 +1233,13 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const QVector modelIDs; QSet remainingFBXModels; for (QHash::const_iterator fbxModel = fbxModels.constBegin(); fbxModel != fbxModels.constEnd(); fbxModel++) { - // models with fbxClusters must be parented to the cluster top + // models with clusters must be parented to the cluster top // Unless the model is a root node. bool isARootNode = !modelIDs.contains(_connectionParentMap.value(fbxModel.key())); if (!isARootNode) { foreach(const QString& deformerID, _connectionChildMap.values(fbxModel.key())) { foreach(const QString& clusterID, _connectionChildMap.values(deformerID)) { - if (!fbxClusters.contains(clusterID)) { + if (!clusters.contains(clusterID)) { continue; } QString topID = getTopModelID(_connectionParentMap, fbxModels, _connectionChildMap.value(clusterID), url); @@ -1299,18 +1283,12 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const // convert the models to joints hfmModel.hasSkeletonJoints = false; - - bool needMixamoHack = hfmModel.applicationName == "mixamo.com"; - std::vector transformForClusters; - transformForClusters.reserve((size_t)modelIDs.size()); - for (const QString& modelID : modelIDs) { + foreach (const QString& modelID, modelIDs) { const FBXModel& fbxModel = fbxModels[modelID]; HFMJoint joint; joint.parentIndex = fbxModel.parentIndex; - uint32_t jointIndex = (uint32_t)hfmModel.joints.size(); - - // Copy default joint parameters from model + int jointIndex = hfmModel.joints.size(); joint.translation = fbxModel.translation; // these are usually in centimeters joint.preTransform = fbxModel.preTransform; @@ -1321,62 +1299,35 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const joint.rotationMin = fbxModel.rotationMin; joint.rotationMax = fbxModel.rotationMax; - if (fbxModel.hasGeometricOffset) { - joint.geometricOffset = createMatFromScaleQuatAndPos(fbxModel.geometricScaling, fbxModel.geometricRotation, fbxModel.geometricTranslation); - } + joint.hasGeometricOffset = fbxModel.hasGeometricOffset; + joint.geometricTranslation = fbxModel.geometricTranslation; + joint.geometricRotation = fbxModel.geometricRotation; + joint.geometricScaling = fbxModel.geometricScaling; joint.isSkeletonJoint = fbxModel.isLimbNode; hfmModel.hasSkeletonJoints = (hfmModel.hasSkeletonJoints || joint.isSkeletonJoint); - - joint.name = fbxModel.name; - - joint.bindTransformFoundInCluster = false; - - // With the basic joint information, we can start to calculate compound transform information - // modelIDs is ordered from parent to children, so we can safely get parent transforms from earlier joints as we iterate - - // Make adjustments to the static joint properties, and pre-calculate static transforms - if (applyUpAxisZRotation && joint.parentIndex == -1) { joint.rotation *= upAxisZRotation; joint.translation = upAxisZRotation * joint.translation; } - glm::quat combinedRotation = joint.preRotation * joint.rotation * joint.postRotation; - joint.localTransform = glm::translate(joint.translation) * joint.preTransform * glm::mat4_cast(combinedRotation) * joint.postTransform; - if (joint.parentIndex == -1) { - joint.transform = joint.localTransform; - joint.globalTransform = hfmModel.offset * joint.localTransform; + joint.transform = hfmModel.offset * glm::translate(joint.translation) * joint.preTransform * + glm::mat4_cast(combinedRotation) * joint.postTransform; joint.inverseDefaultRotation = glm::inverse(combinedRotation); joint.distanceToParent = 0.0f; + } else { const HFMJoint& parentJoint = hfmModel.joints.at(joint.parentIndex); - joint.transform = parentJoint.transform * joint.localTransform; - joint.globalTransform = parentJoint.globalTransform * joint.localTransform; + joint.transform = parentJoint.transform * glm::translate(joint.translation) * + joint.preTransform * glm::mat4_cast(combinedRotation) * joint.postTransform; joint.inverseDefaultRotation = glm::inverse(combinedRotation) * parentJoint.inverseDefaultRotation; - joint.distanceToParent = glm::distance(extractTranslation(parentJoint.transform), extractTranslation(joint.transform)); + joint.distanceToParent = glm::distance(extractTranslation(parentJoint.transform), + extractTranslation(joint.transform)); } joint.inverseBindRotation = joint.inverseDefaultRotation; + joint.name = fbxModel.name; - // If needed, separately calculate the FBX-specific transform used for inverse bind transform calculations - - glm::mat4 transformForCluster; - if (applyUpAxisZRotation) { - const glm::quat jointBindCombinedRotation = fbxModel.preRotation * fbxModel.rotation * fbxModel.postRotation; - const glm::mat4 localTransformForCluster = glm::translate(fbxModel.translation) * fbxModel.preTransform * glm::mat4_cast(jointBindCombinedRotation) * fbxModel.postTransform; - if (fbxModel.parentIndex != -1 && fbxModel.parentIndex < (int)jointIndex && !needMixamoHack) { - const glm::mat4& parenttransformForCluster = transformForClusters[fbxModel.parentIndex]; - transformForCluster = parenttransformForCluster * localTransformForCluster; - } else { - transformForCluster = localTransformForCluster; - } - } else { - transformForCluster = joint.transform; - } - transformForClusters.push_back(transformForCluster); - - // Initialize animation information next - // And also get the joint poses from the first frame of the animation, if present + joint.bindTransformFoundInCluster = false; QString rotationID = localRotations.value(modelID); AnimationCurve xRotCurve = animationCurves.value(xComponents.value(rotationID)); @@ -1404,11 +1355,14 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const joint.translation = hfmModel.animationFrames[i].translations[jointIndex]; joint.rotation = hfmModel.animationFrames[i].rotations[jointIndex]; } - } - hfmModel.joints.push_back(joint); + } + hfmModel.joints.append(joint); } + // NOTE: shapeVertices are in joint-frame + hfmModel.shapeVertices.resize(std::max(1, hfmModel.joints.size()) ); + hfmModel.bindExtents.reset(); hfmModel.meshExtents.reset(); @@ -1446,202 +1400,233 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const } } #endif - - std::unordered_map materialNameToID; - for (auto materialIt = _hfmMaterials.cbegin(); materialIt != _hfmMaterials.cend(); ++materialIt) { - materialNameToID[materialIt.key().toStdString()] = (uint32_t)hfmModel.materials.size(); - hfmModel.materials.push_back(materialIt.value()); - } + hfmModel.materials = _hfmMaterials; // see if any materials have texture children bool materialsHaveTextures = checkMaterialsHaveTextures(_hfmMaterials, _textureFilenames, _connectionChildMap); for (QMap::iterator it = meshes.begin(); it != meshes.end(); it++) { - const QString& meshID = it.key(); - const ExtractedMesh& extracted = it.value(); - const auto& partMaterialTextures = extracted.partMaterialTextures; + ExtractedMesh& extracted = it.value(); - uint32_t meshIndex = (uint32_t)hfmModel.meshes.size(); - meshIDsToMeshIndices.insert(meshID, meshIndex); - hfmModel.meshes.push_back(extracted.mesh); - hfm::Mesh& mesh = hfmModel.meshes.back(); + extracted.mesh.meshExtents.reset(); - std::vector instanceModelIDs = getModelIDsForMeshID(meshID, fbxModels, _connectionParentMap); - // meshShapes will be added to hfmModel at the very end - std::vector meshShapes; - meshShapes.reserve(instanceModelIDs.size() * mesh.parts.size()); - for (const QString& modelID : instanceModelIDs) { - // The transform node has the same indexing order as the joints - int indexOfModelID = modelIDs.indexOf(modelID); - if (indexOfModelID == -1) { - qCDebug(modelformat) << "Model not in model list: " << modelID; - } - const uint32_t transformIndex = (indexOfModelID == -1) ? 0 : (uint32_t)indexOfModelID; + // accumulate local transforms + QString modelID = fbxModels.contains(it.key()) ? it.key() : _connectionParentMap.value(it.key()); + glm::mat4 modelTransform = getGlobalTransform(_connectionParentMap, fbxModels, modelID, hfmModel.applicationName == "mixamo.com", url); - // partShapes will be added to meshShapes at the very end - std::vector partShapes { mesh.parts.size() }; - for (uint32_t i = 0; i < (uint32_t)partShapes.size(); ++i) { - hfm::Shape& shape = partShapes[i]; - shape.mesh = meshIndex; - shape.meshPart = i; - shape.joint = transformIndex; - } + // compute the mesh extents from the transformed vertices + foreach (const glm::vec3& vertex, extracted.mesh.vertices) { + glm::vec3 transformedVertex = glm::vec3(modelTransform * glm::vec4(vertex, 1.0f)); + hfmModel.meshExtents.minimum = glm::min(hfmModel.meshExtents.minimum, transformedVertex); + hfmModel.meshExtents.maximum = glm::max(hfmModel.meshExtents.maximum, transformedVertex); - // For FBX_DRACO_MESH_VERSION < 2, or unbaked models, get materials from the partMaterialTextures - if (!partMaterialTextures.empty()) { - int materialIndex = 0; - int textureIndex = 0; - QList children = _connectionChildMap.values(modelID); - for (int i = children.size() - 1; i >= 0; i--) { - const QString& childID = children.at(i); - if (_hfmMaterials.contains(childID)) { - // the pure material associated with this part - const HFMMaterial& material = _hfmMaterials.value(childID); - for (int j = 0; j < partMaterialTextures.size(); j++) { - if (partMaterialTextures.at(j).first == materialIndex) { - hfm::Shape& shape = partShapes[j]; - shape.material = materialNameToID[material.materialID.toStdString()]; - } - } - materialIndex++; - } else if (_textureFilenames.contains(childID)) { - // NOTE (Sabrina 2019/01/11): getTextures now takes in the materialID as a second parameter, because FBX material nodes can sometimes have uv transform information (ex: "Maya|uv_scale") - // I'm leaving the second parameter blank right now as this code may never be used. - HFMTexture texture = getTexture(childID, ""); - for (int j = 0; j < partMaterialTextures.size(); j++) { - int partTexture = partMaterialTextures.at(j).second; - if (partTexture == textureIndex && !(partTexture == 0 && materialsHaveTextures)) { - // TODO: DO something here that replaces this legacy code - // Maybe create a material just for this part with the correct textures? - // material.albedoTexture = texture; - // partShapes[j].material = materialIndex; - } - } - textureIndex++; - } - } - } - // For baked models with FBX_DRACO_MESH_VERSION >= 2, get materials from extracted.materialIDPerMeshPart - if (!extracted.materialIDPerMeshPart.empty()) { - assert(partShapes.size() == extracted.materialIDPerMeshPart.size()); - for (uint32_t i = 0; i < (uint32_t)extracted.materialIDPerMeshPart.size(); ++i) { - hfm::Shape& shape = partShapes[i]; - const std::string& materialID = extracted.materialIDPerMeshPart[i]; - auto materialIt = materialNameToID.find(materialID); - if (materialIt != materialNameToID.end()) { - shape.material = materialIt->second; - } - } - } - - // find the clusters with which the mesh is associated - QVector clusterIDs; - for (const QString& childID : _connectionChildMap.values(meshID)) { - for (const QString& clusterID : _connectionChildMap.values(childID)) { - if (!fbxClusters.contains(clusterID)) { - continue; - } - clusterIDs.append(clusterID); - } - } - - // whether we're skinned depends on how many clusters are attached - if (clusterIDs.size() > 0) { - hfm::SkinDeformer skinDeformer; - auto& clusters = skinDeformer.clusters; - for (const auto& clusterID : clusterIDs) { - HFMCluster hfmCluster; - const Cluster& fbxCluster = fbxClusters[clusterID]; - - // see http://stackoverflow.com/questions/13566608/loading-skinning-information-from-fbx for a discussion - // of skinning information in FBX - QString jointID = _connectionChildMap.value(clusterID); - int indexOfJointID = modelIDs.indexOf(jointID); - if (indexOfJointID == -1) { - qCDebug(modelformat) << "Joint not in model list: " << jointID; - hfmCluster.jointIndex = 0; - } else { - hfmCluster.jointIndex = (uint32_t)indexOfJointID; - } - - const glm::mat4& transformForCluster = transformForClusters[transformIndex]; - hfmCluster.inverseBindMatrix = glm::inverse(fbxCluster.transformLink) * transformForCluster; - - // slam bottom row to (0, 0, 0, 1), we KNOW this is not a perspective matrix and - // sometimes floating point fuzz can be introduced after the inverse. - hfmCluster.inverseBindMatrix[0][3] = 0.0f; - hfmCluster.inverseBindMatrix[1][3] = 0.0f; - hfmCluster.inverseBindMatrix[2][3] = 0.0f; - hfmCluster.inverseBindMatrix[3][3] = 1.0f; - - hfmCluster.inverseBindTransform = Transform(hfmCluster.inverseBindMatrix); - - clusters.push_back(hfmCluster); - - // override the bind rotation with the transform link - HFMJoint& joint = hfmModel.joints[hfmCluster.jointIndex]; - joint.inverseBindRotation = glm::inverse(extractRotation(fbxCluster.transformLink)); - joint.bindTransform = fbxCluster.transformLink; - joint.bindTransformFoundInCluster = true; - - // update the bind pose extents - glm::vec3 bindTranslation = extractTranslation(hfmModel.offset * joint.bindTransform); - hfmModel.bindExtents.addPoint(bindTranslation); - } - - // the last cluster is the root cluster - HFMCluster cluster; - cluster.jointIndex = transformIndex; - clusters.push_back(cluster); - - // Skinned mesh instances have an hfm::SkinDeformer - std::vector skinClusters; - for (const auto& clusterID : clusterIDs) { - const Cluster& fbxCluster = fbxClusters[clusterID]; - skinClusters.emplace_back(); - hfm::SkinCluster& skinCluster = skinClusters.back(); - size_t indexWeightPairs = (size_t)std::min(fbxCluster.indices.size(), fbxCluster.weights.size()); - skinCluster.indices.reserve(indexWeightPairs); - skinCluster.weights.reserve(indexWeightPairs); - - for (int j = 0; j < fbxCluster.indices.size(); j++) { - int oldIndex = fbxCluster.indices.at(j); - float weight = fbxCluster.weights.at(j); - for (QMultiHash::const_iterator it = extracted.newIndices.constFind(oldIndex); - it != extracted.newIndices.end() && it.key() == oldIndex; it++) { - int newIndex = it.value(); - - skinCluster.indices.push_back(newIndex); - skinCluster.weights.push_back(weight); - } - } - } - // It seems odd that this mesh-related code should be inside of the for loop for instanced model IDs. - // However, in practice, skinned FBX models appear to not be instanced, as the skinning includes both the weights and joints. - { - hfm::ReweightedDeformers reweightedDeformers = hfm::getReweightedDeformers(mesh.vertices.size(), skinClusters); - if (reweightedDeformers.trimmedToMatch) { - qDebug(modelformat) << "FBXSerializer -- The number of indices and weights for a skinning deformer had different sizes and have been trimmed to match"; - } - mesh.clusterIndices = std::move(reweightedDeformers.indices); - mesh.clusterWeights = std::move(reweightedDeformers.weights); - mesh.clusterWeightsPerVertex = reweightedDeformers.weightsPerVertex; - } - - // Store the model's dynamic transform, and put its ID in the shapes - uint32_t skinDeformerID = (uint32_t)hfmModel.skinDeformers.size(); - hfmModel.skinDeformers.push_back(skinDeformer); - for (hfm::Shape& shape : partShapes) { - shape.skinDeformer = skinDeformerID; - } - } - - // Store the parts for this mesh (or instance of this mesh, as the case may be) - meshShapes.insert(meshShapes.cend(), partShapes.cbegin(), partShapes.cend()); + extracted.mesh.meshExtents.minimum = glm::min(extracted.mesh.meshExtents.minimum, transformedVertex); + extracted.mesh.meshExtents.maximum = glm::max(extracted.mesh.meshExtents.maximum, transformedVertex); + extracted.mesh.modelTransform = modelTransform; } - // Store the shapes for the mesh (or multiple instances of the mesh, as the case may be) - hfmModel.shapes.insert(hfmModel.shapes.cend(), meshShapes.cbegin(), meshShapes.cend()); + // look for textures, material properties + // allocate the Part material library + // NOTE: extracted.partMaterialTextures is empty for FBX_DRACO_MESH_VERSION >= 2. In that case, the mesh part's materialID string is already defined. + int materialIndex = 0; + int textureIndex = 0; + QList children = _connectionChildMap.values(modelID); + for (int i = children.size() - 1; i >= 0; i--) { + + const QString& childID = children.at(i); + if (_hfmMaterials.contains(childID)) { + // the pure material associated with this part + HFMMaterial material = _hfmMaterials.value(childID); + + for (int j = 0; j < extracted.partMaterialTextures.size(); j++) { + if (extracted.partMaterialTextures.at(j).first == materialIndex) { + HFMMeshPart& part = extracted.mesh.parts[j]; + part.materialID = material.materialID; + } + } + + materialIndex++; + } else if (_textureFilenames.contains(childID)) { + // NOTE (Sabrina 2019/01/11): getTextures now takes in the materialID as a second parameter, because FBX material nodes can sometimes have uv transform information (ex: "Maya|uv_scale") + // I'm leaving the second parameter blank right now as this code may never be used. + HFMTexture texture = getTexture(childID, ""); + for (int j = 0; j < extracted.partMaterialTextures.size(); j++) { + int partTexture = extracted.partMaterialTextures.at(j).second; + if (partTexture == textureIndex && !(partTexture == 0 && materialsHaveTextures)) { + // TODO: DO something here that replaces this legacy code + // Maybe create a material just for this part with the correct textures? + // extracted.mesh.parts[j].diffuseTexture = texture; + } + } + textureIndex++; + } + } + + // find the clusters with which the mesh is associated + QVector clusterIDs; + foreach (const QString& childID, _connectionChildMap.values(it.key())) { + foreach (const QString& clusterID, _connectionChildMap.values(childID)) { + if (!clusters.contains(clusterID)) { + continue; + } + HFMCluster hfmCluster; + const Cluster& cluster = clusters[clusterID]; + clusterIDs.append(clusterID); + + // see http://stackoverflow.com/questions/13566608/loading-skinning-information-from-fbx for a discussion + // of skinning information in FBX + QString jointID = _connectionChildMap.value(clusterID); + hfmCluster.jointIndex = modelIDs.indexOf(jointID); + if (hfmCluster.jointIndex == -1) { + qCDebug(modelformat) << "Joint not in model list: " << jointID; + hfmCluster.jointIndex = 0; + } + + hfmCluster.inverseBindMatrix = glm::inverse(cluster.transformLink) * modelTransform; + + // slam bottom row to (0, 0, 0, 1), we KNOW this is not a perspective matrix and + // sometimes floating point fuzz can be introduced after the inverse. + hfmCluster.inverseBindMatrix[0][3] = 0.0f; + hfmCluster.inverseBindMatrix[1][3] = 0.0f; + hfmCluster.inverseBindMatrix[2][3] = 0.0f; + hfmCluster.inverseBindMatrix[3][3] = 1.0f; + + hfmCluster.inverseBindTransform = Transform(hfmCluster.inverseBindMatrix); + + extracted.mesh.clusters.append(hfmCluster); + + // override the bind rotation with the transform link + HFMJoint& joint = hfmModel.joints[hfmCluster.jointIndex]; + joint.inverseBindRotation = glm::inverse(extractRotation(cluster.transformLink)); + joint.bindTransform = cluster.transformLink; + joint.bindTransformFoundInCluster = true; + + // update the bind pose extents + glm::vec3 bindTranslation = extractTranslation(hfmModel.offset * joint.bindTransform); + hfmModel.bindExtents.addPoint(bindTranslation); + } + } + + // the last cluster is the root cluster + { + HFMCluster cluster; + cluster.jointIndex = modelIDs.indexOf(modelID); + if (cluster.jointIndex == -1) { + qCDebug(modelformat) << "Model not in model list: " << modelID; + cluster.jointIndex = 0; + } + extracted.mesh.clusters.append(cluster); + } + + // whether we're skinned depends on how many clusters are attached + if (clusterIDs.size() > 1) { + // this is a multi-mesh joint + const int WEIGHTS_PER_VERTEX = 4; + int numClusterIndices = extracted.mesh.vertices.size() * WEIGHTS_PER_VERTEX; + extracted.mesh.clusterIndices.fill(extracted.mesh.clusters.size() - 1, numClusterIndices); + QVector weightAccumulators; + weightAccumulators.fill(0.0f, numClusterIndices); + + for (int i = 0; i < clusterIDs.size(); i++) { + QString clusterID = clusterIDs.at(i); + const Cluster& cluster = clusters[clusterID]; + const HFMCluster& hfmCluster = extracted.mesh.clusters.at(i); + int jointIndex = hfmCluster.jointIndex; + HFMJoint& joint = hfmModel.joints[jointIndex]; + + glm::mat4 meshToJoint = glm::inverse(joint.bindTransform) * modelTransform; + ShapeVertices& points = hfmModel.shapeVertices.at(jointIndex); + + for (int j = 0; j < cluster.indices.size(); j++) { + int oldIndex = cluster.indices.at(j); + float weight = cluster.weights.at(j); + for (QMultiHash::const_iterator it = extracted.newIndices.constFind(oldIndex); + it != extracted.newIndices.end() && it.key() == oldIndex; it++) { + int newIndex = it.value(); + + // remember vertices with at least 1/4 weight + // FIXME: vertices with no weightpainting won't get recorded here + const float EXPANSION_WEIGHT_THRESHOLD = 0.25f; + if (weight >= EXPANSION_WEIGHT_THRESHOLD) { + // transform to joint-frame and save for later + const glm::mat4 vertexTransform = meshToJoint * glm::translate(extracted.mesh.vertices.at(newIndex)); + points.push_back(extractTranslation(vertexTransform)); + } + + // look for an unused slot in the weights vector + int weightIndex = newIndex * WEIGHTS_PER_VERTEX; + int lowestIndex = -1; + float lowestWeight = FLT_MAX; + int k = 0; + for (; k < WEIGHTS_PER_VERTEX; k++) { + if (weightAccumulators[weightIndex + k] == 0.0f) { + extracted.mesh.clusterIndices[weightIndex + k] = i; + weightAccumulators[weightIndex + k] = weight; + break; + } + if (weightAccumulators[weightIndex + k] < lowestWeight) { + lowestIndex = k; + lowestWeight = weightAccumulators[weightIndex + k]; + } + } + if (k == WEIGHTS_PER_VERTEX && weight > lowestWeight) { + // no space for an additional weight; we must replace the lowest + weightAccumulators[weightIndex + lowestIndex] = weight; + extracted.mesh.clusterIndices[weightIndex + lowestIndex] = i; + } + } + } + } + + // now that we've accumulated the most relevant weights for each vertex + // normalize and compress to 16-bits + extracted.mesh.clusterWeights.fill(0, numClusterIndices); + int numVertices = extracted.mesh.vertices.size(); + for (int i = 0; i < numVertices; ++i) { + int j = i * WEIGHTS_PER_VERTEX; + + // normalize weights into uint16_t + float totalWeight = 0.0f; + for (int k = j; k < j + WEIGHTS_PER_VERTEX; ++k) { + totalWeight += weightAccumulators[k]; + } + + const float ALMOST_HALF = 0.499f; + if (totalWeight > 0.0f) { + float weightScalingFactor = (float)(UINT16_MAX) / totalWeight; + for (int k = j; k < j + WEIGHTS_PER_VERTEX; ++k) { + extracted.mesh.clusterWeights[k] = (uint16_t)(weightScalingFactor * weightAccumulators[k] + ALMOST_HALF); + } + } else { + extracted.mesh.clusterWeights[j] = (uint16_t)((float)(UINT16_MAX) + ALMOST_HALF); + } + } + } else { + // this is a single-joint mesh + const HFMCluster& firstHFMCluster = extracted.mesh.clusters.at(0); + int jointIndex = firstHFMCluster.jointIndex; + HFMJoint& joint = hfmModel.joints[jointIndex]; + + // transform cluster vertices to joint-frame and save for later + glm::mat4 meshToJoint = glm::inverse(joint.bindTransform) * modelTransform; + ShapeVertices& points = hfmModel.shapeVertices.at(jointIndex); + foreach (const glm::vec3& vertex, extracted.mesh.vertices) { + const glm::mat4 vertexTransform = meshToJoint * glm::translate(vertex); + points.push_back(extractTranslation(vertexTransform)); + } + + // Apply geometric offset, if present, by transforming the vertices directly + if (joint.hasGeometricOffset) { + glm::mat4 geometricOffset = createMatFromScaleQuatAndPos(joint.geometricScaling, joint.geometricRotation, joint.geometricTranslation); + for (int i = 0; i < extracted.mesh.vertices.size(); i++) { + extracted.mesh.vertices[i] = transformPoint(geometricOffset, extracted.mesh.vertices[i]); + } + } + } + + hfmModel.meshes.append(extracted.mesh); + int meshIndex = hfmModel.meshes.size() - 1; + meshIDsToMeshIndices.insert(it.key(), meshIndex); } // attempt to map any meshes to a named model @@ -1660,6 +1645,14 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const } } + if (applyUpAxisZRotation) { + hfmModelPtr->meshExtents.transform(glm::mat4_cast(upAxisZRotation)); + hfmModelPtr->bindExtents.transform(glm::mat4_cast(upAxisZRotation)); + for (auto &mesh : hfmModelPtr->meshes) { + mesh.modelTransform *= glm::mat4_cast(upAxisZRotation); + mesh.meshExtents.transform(glm::mat4_cast(upAxisZRotation)); + } + } return hfmModelPtr; } diff --git a/libraries/fbx/src/FBXSerializer.h b/libraries/fbx/src/FBXSerializer.h index 2044d82710..7d41f98444 100644 --- a/libraries/fbx/src/FBXSerializer.h +++ b/libraries/fbx/src/FBXSerializer.h @@ -100,15 +100,7 @@ public: {} }; -class ExtractedMesh { -public: - hfm::Mesh mesh; - std::vector materialIDPerMeshPart; - QMultiHash newIndices; - QVector > blendshapeIndexMaps; - QVector > partMaterialTextures; - QHash texcoordSetMap; -}; +class ExtractedMesh; class FBXSerializer : public HFMSerializer { public: diff --git a/libraries/fbx/src/FBXSerializer_Mesh.cpp b/libraries/fbx/src/FBXSerializer_Mesh.cpp index e687f5e9f2..802db4b428 100644 --- a/libraries/fbx/src/FBXSerializer_Mesh.cpp +++ b/libraries/fbx/src/FBXSerializer_Mesh.cpp @@ -355,7 +355,7 @@ ExtractedMesh FBXSerializer::extractMesh(const FBXNode& object, unsigned int& me // Check for additional metadata unsigned int dracoMeshNodeVersion = 1; - std::vector dracoMaterialList; + std::vector dracoMaterialList; for (const auto& dracoChild : child.children) { if (dracoChild.name == "FBXDracoMeshVersion") { if (!dracoChild.properties.isEmpty()) { @@ -364,7 +364,7 @@ ExtractedMesh FBXSerializer::extractMesh(const FBXNode& object, unsigned int& me } else if (dracoChild.name == "MaterialList") { dracoMaterialList.reserve(dracoChild.properties.size()); for (const auto& materialID : dracoChild.properties) { - dracoMaterialList.push_back(materialID.toString().toStdString()); + dracoMaterialList.push_back(materialID.toString()); } } } @@ -486,20 +486,21 @@ ExtractedMesh FBXSerializer::extractMesh(const FBXNode& object, unsigned int& me // grab or setup the HFMMeshPart for the part this face belongs to int& partIndexPlusOne = materialTextureParts[materialTexture]; if (partIndexPlusOne == 0) { - data.extracted.mesh.parts.emplace_back(); + data.extracted.mesh.parts.resize(data.extracted.mesh.parts.size() + 1); + HFMMeshPart& part = data.extracted.mesh.parts.back(); - // Figure out if this is the older way of defining the per-part material for baked FBX + // Figure out what material this part is if (dracoMeshNodeVersion >= 2) { - // Define the materialID for this mesh part index - uint16_t safeMaterialID = materialID < dracoMaterialList.size() ? materialID : 0; - data.extracted.materialIDPerMeshPart.push_back(dracoMaterialList[safeMaterialID].c_str()); + // Define the materialID now + if (materialID < dracoMaterialList.size()) { + part.materialID = dracoMaterialList[materialID]; + } } else { // Define the materialID later, based on the order of first appearance of the materials in the _connectionChildMap data.extracted.partMaterialTextures.append(materialTexture); } - // in dracoMeshNodeVersion >= 2, fbx meshes have their per-part materials already defined in data.extracted.materialIDPerMeshPart - partIndexPlusOne = (int)data.extracted.mesh.parts.size(); + partIndexPlusOne = data.extracted.mesh.parts.size(); } // give the mesh part this index @@ -534,7 +535,7 @@ ExtractedMesh FBXSerializer::extractMesh(const FBXNode& object, unsigned int& me if (partIndex == 0) { data.extracted.partMaterialTextures.append(materialTexture); data.extracted.mesh.parts.resize(data.extracted.mesh.parts.size() + 1); - partIndex = (int)data.extracted.mesh.parts.size(); + partIndex = data.extracted.mesh.parts.size(); } HFMMeshPart& part = data.extracted.mesh.parts[partIndex - 1]; diff --git a/libraries/fbx/src/FST.cpp b/libraries/fbx/src/FST.cpp index 5f5b7cf637..b6f109c217 100644 --- a/libraries/fbx/src/FST.cpp +++ b/libraries/fbx/src/FST.cpp @@ -77,7 +77,7 @@ FST* FST::createFSTFromModel(const QString& fstPath, const QString& modelFilePat mapping.insert(JOINT_FIELD, joints); QVariantHash jointIndices; - for (size_t i = 0; i < (size_t)hfmModel.joints.size(); i++) { + for (int i = 0; i < hfmModel.joints.size(); i++) { jointIndices.insert(hfmModel.joints.at(i).name, QString::number(i)); } mapping.insert(JOINT_INDEX_FIELD, jointIndices); diff --git a/libraries/fbx/src/GLTFSerializer.cpp b/libraries/fbx/src/GLTFSerializer.cpp index 9d9d16d733..e117e1f211 100755 --- a/libraries/fbx/src/GLTFSerializer.cpp +++ b/libraries/fbx/src/GLTFSerializer.cpp @@ -25,13 +25,9 @@ #include #include -#include -#include #include #include -#include - #include #include #include @@ -41,57 +37,30 @@ #include "FBXSerializer.h" -#define GLTF_GET_INDICIES(accCount) \ - int index1 = (indices[n + 0] * accCount); \ - int index2 = (indices[n + 1] * accCount); \ - int index3 = (indices[n + 2] * accCount); +#define GLTF_GET_INDICIES(accCount) int index1 = (indices[n + 0] * accCount); int index2 = (indices[n + 1] * accCount); int index3 = (indices[n + 2] * accCount); -#define GLTF_APPEND_ARRAY_1(newArray, oldArray) \ - GLTF_GET_INDICIES(1) \ - newArray.append(oldArray[index1]); \ - newArray.append(oldArray[index2]); \ - newArray.append(oldArray[index3]); +#define GLTF_APPEND_ARRAY_1(newArray, oldArray) GLTF_GET_INDICIES(1) \ +newArray.append(oldArray[index1]); \ +newArray.append(oldArray[index2]); \ +newArray.append(oldArray[index3]); -#define GLTF_APPEND_ARRAY_2(newArray, oldArray) \ - GLTF_GET_INDICIES(2) \ - newArray.append(oldArray[index1]); \ - newArray.append(oldArray[index1 + 1]); \ - newArray.append(oldArray[index2]); \ - newArray.append(oldArray[index2 + 1]); \ - newArray.append(oldArray[index3]); \ - newArray.append(oldArray[index3 + 1]); +#define GLTF_APPEND_ARRAY_2(newArray, oldArray) GLTF_GET_INDICIES(2) \ +newArray.append(oldArray[index1]); newArray.append(oldArray[index1 + 1]); \ +newArray.append(oldArray[index2]); newArray.append(oldArray[index2 + 1]); \ +newArray.append(oldArray[index3]); newArray.append(oldArray[index3 + 1]); -#define GLTF_APPEND_ARRAY_3(newArray, oldArray) \ - GLTF_GET_INDICIES(3) \ - newArray.append(oldArray[index1]); \ - newArray.append(oldArray[index1 + 1]); \ - newArray.append(oldArray[index1 + 2]); \ - newArray.append(oldArray[index2]); \ - newArray.append(oldArray[index2 + 1]); \ - newArray.append(oldArray[index2 + 2]); \ - newArray.append(oldArray[index3]); \ - newArray.append(oldArray[index3 + 1]); \ - newArray.append(oldArray[index3 + 2]); +#define GLTF_APPEND_ARRAY_3(newArray, oldArray) GLTF_GET_INDICIES(3) \ +newArray.append(oldArray[index1]); newArray.append(oldArray[index1 + 1]); newArray.append(oldArray[index1 + 2]); \ +newArray.append(oldArray[index2]); newArray.append(oldArray[index2 + 1]); newArray.append(oldArray[index2 + 2]); \ +newArray.append(oldArray[index3]); newArray.append(oldArray[index3 + 1]); newArray.append(oldArray[index3 + 2]); -#define GLTF_APPEND_ARRAY_4(newArray, oldArray) \ - GLTF_GET_INDICIES(4) \ - newArray.append(oldArray[index1]); \ - newArray.append(oldArray[index1 + 1]); \ - newArray.append(oldArray[index1 + 2]); \ - newArray.append(oldArray[index1 + 3]); \ - newArray.append(oldArray[index2]); \ - newArray.append(oldArray[index2 + 1]); \ - newArray.append(oldArray[index2 + 2]); \ - newArray.append(oldArray[index2 + 3]); \ - newArray.append(oldArray[index3]); \ - newArray.append(oldArray[index3 + 1]); \ - newArray.append(oldArray[index3 + 2]); \ - newArray.append(oldArray[index3 + 3]); +#define GLTF_APPEND_ARRAY_4(newArray, oldArray) GLTF_GET_INDICIES(4) \ +newArray.append(oldArray[index1]); newArray.append(oldArray[index1 + 1]); newArray.append(oldArray[index1 + 2]); newArray.append(oldArray[index1 + 3]); \ +newArray.append(oldArray[index2]); newArray.append(oldArray[index2 + 1]); newArray.append(oldArray[index2 + 2]); newArray.append(oldArray[index2 + 3]); \ +newArray.append(oldArray[index3]); newArray.append(oldArray[index3 + 1]); newArray.append(oldArray[index3 + 2]); newArray.append(oldArray[index3 + 3]); -bool GLTFSerializer::getStringVal(const QJsonObject& object, - const QString& fieldname, - QString& value, - QMap& defined) { +bool GLTFSerializer::getStringVal(const QJsonObject& object, const QString& fieldname, + QString& value, QMap& defined) { bool _defined = (object.contains(fieldname) && object[fieldname].isString()); if (_defined) { value = object[fieldname].toString(); @@ -100,10 +69,8 @@ bool GLTFSerializer::getStringVal(const QJsonObject& object, return _defined; } -bool GLTFSerializer::getBoolVal(const QJsonObject& object, - const QString& fieldname, - bool& value, - QMap& defined) { +bool GLTFSerializer::getBoolVal(const QJsonObject& object, const QString& fieldname, + bool& value, QMap& defined) { bool _defined = (object.contains(fieldname) && object[fieldname].isBool()); if (_defined) { value = object[fieldname].toBool(); @@ -112,7 +79,8 @@ bool GLTFSerializer::getBoolVal(const QJsonObject& object, return _defined; } -bool GLTFSerializer::getIntVal(const QJsonObject& object, const QString& fieldname, int& value, QMap& defined) { +bool GLTFSerializer::getIntVal(const QJsonObject& object, const QString& fieldname, + int& value, QMap& defined) { bool _defined = (object.contains(fieldname) && !object[fieldname].isNull()); if (_defined) { value = object[fieldname].toInt(); @@ -121,10 +89,8 @@ bool GLTFSerializer::getIntVal(const QJsonObject& object, const QString& fieldna return _defined; } -bool GLTFSerializer::getDoubleVal(const QJsonObject& object, - const QString& fieldname, - double& value, - QMap& defined) { +bool GLTFSerializer::getDoubleVal(const QJsonObject& object, const QString& fieldname, + double& value, QMap& defined) { bool _defined = (object.contains(fieldname) && object[fieldname].isDouble()); if (_defined) { value = object[fieldname].toDouble(); @@ -132,10 +98,8 @@ bool GLTFSerializer::getDoubleVal(const QJsonObject& object, defined.insert(fieldname, _defined); return _defined; } -bool GLTFSerializer::getObjectVal(const QJsonObject& object, - const QString& fieldname, - QJsonObject& value, - QMap& defined) { +bool GLTFSerializer::getObjectVal(const QJsonObject& object, const QString& fieldname, + QJsonObject& value, QMap& defined) { bool _defined = (object.contains(fieldname) && object[fieldname].isObject()); if (_defined) { value = object[fieldname].toObject(); @@ -144,14 +108,12 @@ bool GLTFSerializer::getObjectVal(const QJsonObject& object, return _defined; } -bool GLTFSerializer::getIntArrayVal(const QJsonObject& object, - const QString& fieldname, - QVector& values, - QMap& defined) { +bool GLTFSerializer::getIntArrayVal(const QJsonObject& object, const QString& fieldname, + QVector& values, QMap& defined) { bool _defined = (object.contains(fieldname) && object[fieldname].isArray()); if (_defined) { QJsonArray arr = object[fieldname].toArray(); - for (const QJsonValue& v : arr) { + foreach(const QJsonValue & v, arr) { if (!v.isNull()) { values.push_back(v.toInt()); } @@ -161,14 +123,12 @@ bool GLTFSerializer::getIntArrayVal(const QJsonObject& object, return _defined; } -bool GLTFSerializer::getDoubleArrayVal(const QJsonObject& object, - const QString& fieldname, - QVector& values, - QMap& defined) { +bool GLTFSerializer::getDoubleArrayVal(const QJsonObject& object, const QString& fieldname, + QVector& values, QMap& defined) { bool _defined = (object.contains(fieldname) && object[fieldname].isArray()); if (_defined) { QJsonArray arr = object[fieldname].toArray(); - for (const QJsonValue& v : arr) { + foreach(const QJsonValue & v, arr) { if (v.isDouble()) { values.push_back(v.toDouble()); } @@ -178,10 +138,8 @@ bool GLTFSerializer::getDoubleArrayVal(const QJsonObject& object, return _defined; } -bool GLTFSerializer::getObjectArrayVal(const QJsonObject& object, - const QString& fieldname, - QJsonArray& objects, - QMap& defined) { +bool GLTFSerializer::getObjectArrayVal(const QJsonObject& object, const QString& fieldname, + QJsonArray& objects, QMap& defined) { bool _defined = (object.contains(fieldname) && object[fieldname].isArray()); if (_defined) { objects = object[fieldname].toArray(); @@ -191,7 +149,7 @@ bool GLTFSerializer::getObjectArrayVal(const QJsonObject& object, } hifi::ByteArray GLTFSerializer::setGLBChunks(const hifi::ByteArray& data) { - int byte = 4; + int byte = 4; int jsonStart = data.indexOf("JSON", Qt::CaseSensitive); int binStart = data.indexOf("BIN", Qt::CaseSensitive); int jsonLength, binLength; @@ -215,7 +173,8 @@ hifi::ByteArray GLTFSerializer::setGLBChunks(const hifi::ByteArray& data) { return jsonChunk; } -int GLTFSerializer::getMeshPrimitiveRenderingMode(const QString& type) { +int GLTFSerializer::getMeshPrimitiveRenderingMode(const QString& type) +{ if (type == "POINTS") { return GLTFMeshPrimitivesRenderingMode::POINTS; } @@ -240,7 +199,8 @@ int GLTFSerializer::getMeshPrimitiveRenderingMode(const QString& type) { return GLTFMeshPrimitivesRenderingMode::TRIANGLES; } -int GLTFSerializer::getAccessorType(const QString& type) { +int GLTFSerializer::getAccessorType(const QString& type) +{ if (type == "SCALAR") { return GLTFAccessorType::SCALAR; } @@ -278,7 +238,8 @@ graphics::MaterialKey::OpacityMapMode GLTFSerializer::getMaterialAlphaMode(const return graphics::MaterialKey::OPACITY_MAP_BLEND; } -int GLTFSerializer::getCameraType(const QString& type) { +int GLTFSerializer::getCameraType(const QString& type) +{ if (type == "orthographic") { return GLTFCameraTypes::ORTHOGRAPHIC; } @@ -288,7 +249,8 @@ int GLTFSerializer::getCameraType(const QString& type) { return GLTFCameraTypes::PERSPECTIVE; } -int GLTFSerializer::getImageMimeType(const QString& mime) { +int GLTFSerializer::getImageMimeType(const QString& mime) +{ if (mime == "image/jpeg") { return GLTFImageMimetype::JPEG; } @@ -298,7 +260,8 @@ int GLTFSerializer::getImageMimeType(const QString& mime) { return GLTFImageMimetype::JPEG; } -int GLTFSerializer::getAnimationSamplerInterpolation(const QString& interpolation) { +int GLTFSerializer::getAnimationSamplerInterpolation(const QString& interpolation) +{ if (interpolation == "LINEAR") { return GLTFAnimationSamplerInterpolation::LINEAR; } @@ -309,7 +272,8 @@ bool GLTFSerializer::setAsset(const QJsonObject& object) { QJsonObject jsAsset; bool isAssetDefined = getObjectVal(object, "asset", jsAsset, _file.defined); if (isAssetDefined) { - if (!getStringVal(jsAsset, "version", _file.asset.version, _file.asset.defined) || _file.asset.version != "2.0") { + if (!getStringVal(jsAsset, "version", _file.asset.version, + _file.asset.defined) || _file.asset.version != "2.0") { return false; } getStringVal(jsAsset, "generator", _file.asset.generator, _file.asset.defined); @@ -318,8 +282,7 @@ bool GLTFSerializer::setAsset(const QJsonObject& object) { return isAssetDefined; } -GLTFAccessor::GLTFAccessorSparse::GLTFAccessorSparseIndices GLTFSerializer::createAccessorSparseIndices( - const QJsonObject& object) { +GLTFAccessor::GLTFAccessorSparse::GLTFAccessorSparseIndices GLTFSerializer::createAccessorSparseIndices(const QJsonObject& object) { GLTFAccessor::GLTFAccessorSparse::GLTFAccessorSparseIndices accessorSparseIndices; getIntVal(object, "bufferView", accessorSparseIndices.bufferView, accessorSparseIndices.defined); @@ -329,8 +292,7 @@ GLTFAccessor::GLTFAccessorSparse::GLTFAccessorSparseIndices GLTFSerializer::crea return accessorSparseIndices; } -GLTFAccessor::GLTFAccessorSparse::GLTFAccessorSparseValues GLTFSerializer::createAccessorSparseValues( - const QJsonObject& object) { +GLTFAccessor::GLTFAccessorSparse::GLTFAccessorSparseValues GLTFSerializer::createAccessorSparseValues(const QJsonObject& object) { GLTFAccessor::GLTFAccessorSparse::GLTFAccessorSparseValues accessorSparseValues; getIntVal(object, "bufferView", accessorSparseValues.bufferView, accessorSparseValues.defined); @@ -357,7 +319,7 @@ GLTFAccessor::GLTFAccessorSparse GLTFSerializer::createAccessorSparse(const QJso bool GLTFSerializer::addAccessor(const QJsonObject& object) { GLTFAccessor accessor; - + getIntVal(object, "bufferView", accessor.bufferView, accessor.defined); getIntVal(object, "byteOffset", accessor.byteOffset, accessor.defined); getIntVal(object, "componentType", accessor.componentType, accessor.defined); @@ -383,10 +345,10 @@ bool GLTFSerializer::addAccessor(const QJsonObject& object) { bool GLTFSerializer::addAnimation(const QJsonObject& object) { GLTFAnimation animation; - + QJsonArray channels; if (getObjectArrayVal(object, "channels", channels, animation.defined)) { - for (const QJsonValue& v : channels) { + foreach(const QJsonValue & v, channels) { if (v.isObject()) { GLTFChannel channel; getIntVal(v.toObject(), "sampler", channel.sampler, channel.defined); @@ -394,14 +356,14 @@ bool GLTFSerializer::addAnimation(const QJsonObject& object) { if (getObjectVal(v.toObject(), "target", jsChannel, channel.defined)) { getIntVal(jsChannel, "node", channel.target.node, channel.target.defined); getIntVal(jsChannel, "path", channel.target.path, channel.target.defined); - } + } } } } QJsonArray samplers; if (getObjectArrayVal(object, "samplers", samplers, animation.defined)) { - for (const QJsonValue& v : samplers) { + foreach(const QJsonValue & v, samplers) { if (v.isObject()) { GLTFAnimationSampler sampler; getIntVal(v.toObject(), "input", sampler.input, sampler.defined); @@ -413,7 +375,7 @@ bool GLTFSerializer::addAnimation(const QJsonObject& object) { } } } - + _file.animations.push_back(animation); return true; @@ -421,20 +383,20 @@ bool GLTFSerializer::addAnimation(const QJsonObject& object) { bool GLTFSerializer::addBufferView(const QJsonObject& object) { GLTFBufferView bufferview; - + getIntVal(object, "buffer", bufferview.buffer, bufferview.defined); getIntVal(object, "byteLength", bufferview.byteLength, bufferview.defined); getIntVal(object, "byteOffset", bufferview.byteOffset, bufferview.defined); getIntVal(object, "target", bufferview.target, bufferview.defined); - + _file.bufferviews.push_back(bufferview); - + return true; } bool GLTFSerializer::addBuffer(const QJsonObject& object) { GLTFBuffer buffer; - + getIntVal(object, "byteLength", buffer.byteLength, buffer.defined); if (_url.toString().endsWith("glb")) { @@ -450,13 +412,13 @@ bool GLTFSerializer::addBuffer(const QJsonObject& object) { } } _file.buffers.push_back(buffer); - + return true; } bool GLTFSerializer::addCamera(const QJsonObject& object) { GLTFCamera camera; - + QJsonObject jsPerspective; QJsonObject jsOrthographic; QString type; @@ -476,15 +438,15 @@ bool GLTFSerializer::addCamera(const QJsonObject& object) { } else if (getStringVal(object, "type", type, camera.defined)) { camera.type = getCameraType(type); } - + _file.cameras.push_back(camera); - + return true; } bool GLTFSerializer::addImage(const QJsonObject& object) { GLTFImage image; - + QString mime; getStringVal(object, "uri", image.uri, image.defined); if (image.uri.contains("data:image/png;base64,")) { @@ -494,18 +456,16 @@ bool GLTFSerializer::addImage(const QJsonObject& object) { } if (getStringVal(object, "mimeType", mime, image.defined)) { image.mimeType = getImageMimeType(mime); - } + } getIntVal(object, "bufferView", image.bufferView, image.defined); - + _file.images.push_back(image); return true; } -bool GLTFSerializer::getIndexFromObject(const QJsonObject& object, - const QString& field, - int& outidx, - QMap& defined) { +bool GLTFSerializer::getIndexFromObject(const QJsonObject& object, const QString& field, + int& outidx, QMap& defined) { QJsonObject subobject; if (getObjectVal(object, field, subobject, defined)) { QMap tmpdefined = QMap(); @@ -530,18 +490,23 @@ bool GLTFSerializer::addMaterial(const QJsonObject& object) { getDoubleVal(object, "alphaCutoff", material.alphaCutoff, material.defined); QJsonObject jsMetallicRoughness; if (getObjectVal(object, "pbrMetallicRoughness", jsMetallicRoughness, material.defined)) { - getDoubleArrayVal(jsMetallicRoughness, "baseColorFactor", material.pbrMetallicRoughness.baseColorFactor, + getDoubleArrayVal(jsMetallicRoughness, "baseColorFactor", + material.pbrMetallicRoughness.baseColorFactor, material.pbrMetallicRoughness.defined); - getIndexFromObject(jsMetallicRoughness, "baseColorTexture", material.pbrMetallicRoughness.baseColorTexture, + getIndexFromObject(jsMetallicRoughness, "baseColorTexture", + material.pbrMetallicRoughness.baseColorTexture, material.pbrMetallicRoughness.defined); - getDoubleVal(jsMetallicRoughness, "metallicFactor", material.pbrMetallicRoughness.metallicFactor, + getDoubleVal(jsMetallicRoughness, "metallicFactor", + material.pbrMetallicRoughness.metallicFactor, material.pbrMetallicRoughness.defined); - getDoubleVal(jsMetallicRoughness, "roughnessFactor", material.pbrMetallicRoughness.roughnessFactor, + getDoubleVal(jsMetallicRoughness, "roughnessFactor", + material.pbrMetallicRoughness.roughnessFactor, material.pbrMetallicRoughness.defined); - getIndexFromObject(jsMetallicRoughness, "metallicRoughnessTexture", - material.pbrMetallicRoughness.metallicRoughnessTexture, material.pbrMetallicRoughness.defined); + getIndexFromObject(jsMetallicRoughness, "metallicRoughnessTexture", + material.pbrMetallicRoughness.metallicRoughnessTexture, + material.pbrMetallicRoughness.defined); } - _file.materials.push_back(material); + _file.materials.push_back(material); return true; } @@ -553,18 +518,18 @@ bool GLTFSerializer::addMesh(const QJsonObject& object) { QJsonArray jsPrimitives; object.keys(); if (getObjectArrayVal(object, "primitives", jsPrimitives, mesh.defined)) { - for (const QJsonValue& prim : jsPrimitives) { + foreach(const QJsonValue & prim, jsPrimitives) { if (prim.isObject()) { GLTFMeshPrimitive primitive; QJsonObject jsPrimitive = prim.toObject(); getIntVal(jsPrimitive, "mode", primitive.mode, primitive.defined); getIntVal(jsPrimitive, "indices", primitive.indices, primitive.defined); getIntVal(jsPrimitive, "material", primitive.material, primitive.defined); - + QJsonObject jsAttributes; if (getObjectVal(jsPrimitive, "attributes", jsAttributes, primitive.defined)) { QStringList attrKeys = jsAttributes.keys(); - for (const QString& attrKey : attrKeys) { + foreach(const QString & attrKey, attrKeys) { int attrVal; getIntVal(jsAttributes, attrKey, attrVal, primitive.attributes.defined); primitive.attributes.values.insert(attrKey, attrVal); @@ -572,13 +537,14 @@ bool GLTFSerializer::addMesh(const QJsonObject& object) { } QJsonArray jsTargets; - if (getObjectArrayVal(jsPrimitive, "targets", jsTargets, primitive.defined)) { - for (const QJsonValue& tar : jsTargets) { + if (getObjectArrayVal(jsPrimitive, "targets", jsTargets, primitive.defined)) + { + foreach(const QJsonValue & tar, jsTargets) { if (tar.isObject()) { QJsonObject jsTarget = tar.toObject(); QStringList tarKeys = jsTarget.keys(); GLTFMeshPrimitiveAttr target; - for (const QString& tarKey : tarKeys) { + foreach(const QString & tarKey, tarKeys) { int tarVal; getIntVal(jsTarget, tarKey, tarVal, target.defined); target.values.insert(tarKey, tarVal); @@ -586,7 +552,7 @@ bool GLTFSerializer::addMesh(const QJsonObject& object) { primitive.targets.push_back(target); } } - } + } mesh.primitives.push_back(primitive); } } @@ -597,7 +563,9 @@ bool GLTFSerializer::addMesh(const QJsonObject& object) { if (getObjectVal(object, "extras", jsExtras, mesh.defined)) { QJsonArray jsTargetNames; if (getObjectArrayVal(jsExtras, "targetNames", jsTargetNames, extras.defined)) { - foreach (const QJsonValue& tarName, jsTargetNames) { extras.targetNames.push_back(tarName.toString()); } + foreach (const QJsonValue& tarName, jsTargetNames) { + extras.targetNames.push_back(tarName.toString()); + } } mesh.extras = extras; } @@ -609,7 +577,7 @@ bool GLTFSerializer::addMesh(const QJsonObject& object) { bool GLTFSerializer::addNode(const QJsonObject& object) { GLTFNode node; - + getStringVal(object, "name", node.name, node.defined); getIntVal(object, "camera", node.camera, node.defined); getIntVal(object, "mesh", node.mesh, node.defined); @@ -638,6 +606,7 @@ bool GLTFSerializer::addSampler(const QJsonObject& object) { _file.samplers.push_back(sampler); return true; + } bool GLTFSerializer::addScene(const QJsonObject& object) { @@ -663,10 +632,10 @@ bool GLTFSerializer::addSkin(const QJsonObject& object) { } bool GLTFSerializer::addTexture(const QJsonObject& object) { - GLTFTexture texture; + GLTFTexture texture; getIntVal(object, "sampler", texture.sampler, texture.defined); getIntVal(object, "source", texture.source, texture.defined); - + _file.textures.push_back(texture); return true; @@ -679,8 +648,8 @@ bool GLTFSerializer::parseGLTF(const hifi::ByteArray& data) { if (_url.toString().endsWith("glb") && data.indexOf("glTF") == 0 && data.contains("JSON")) { jsonChunk = setGLBChunks(data); - } - + } + QJsonDocument d = QJsonDocument::fromJson(jsonChunk); QJsonObject jsFile = d.object(); @@ -688,7 +657,7 @@ bool GLTFSerializer::parseGLTF(const hifi::ByteArray& data) { if (success) { QJsonArray accessors; if (getObjectArrayVal(jsFile, "accessors", accessors, _file.defined)) { - for (const QJsonValue& accVal : accessors) { + foreach(const QJsonValue & accVal, accessors) { if (accVal.isObject()) { success = success && addAccessor(accVal.toObject()); } @@ -697,7 +666,7 @@ bool GLTFSerializer::parseGLTF(const hifi::ByteArray& data) { QJsonArray animations; if (getObjectArrayVal(jsFile, "animations", animations, _file.defined)) { - for (const QJsonValue& animVal : accessors) { + foreach(const QJsonValue & animVal, accessors) { if (animVal.isObject()) { success = success && addAnimation(animVal.toObject()); } @@ -706,7 +675,7 @@ bool GLTFSerializer::parseGLTF(const hifi::ByteArray& data) { QJsonArray bufferViews; if (getObjectArrayVal(jsFile, "bufferViews", bufferViews, _file.defined)) { - for (const QJsonValue& bufviewVal : bufferViews) { + foreach(const QJsonValue & bufviewVal, bufferViews) { if (bufviewVal.isObject()) { success = success && addBufferView(bufviewVal.toObject()); } @@ -715,7 +684,7 @@ bool GLTFSerializer::parseGLTF(const hifi::ByteArray& data) { QJsonArray buffers; if (getObjectArrayVal(jsFile, "buffers", buffers, _file.defined)) { - for (const QJsonValue& bufVal : buffers) { + foreach(const QJsonValue & bufVal, buffers) { if (bufVal.isObject()) { success = success && addBuffer(bufVal.toObject()); } @@ -724,7 +693,7 @@ bool GLTFSerializer::parseGLTF(const hifi::ByteArray& data) { QJsonArray cameras; if (getObjectArrayVal(jsFile, "cameras", cameras, _file.defined)) { - for (const QJsonValue& camVal : cameras) { + foreach(const QJsonValue & camVal, cameras) { if (camVal.isObject()) { success = success && addCamera(camVal.toObject()); } @@ -733,7 +702,7 @@ bool GLTFSerializer::parseGLTF(const hifi::ByteArray& data) { QJsonArray images; if (getObjectArrayVal(jsFile, "images", images, _file.defined)) { - for (const QJsonValue& imgVal : images) { + foreach(const QJsonValue & imgVal, images) { if (imgVal.isObject()) { success = success && addImage(imgVal.toObject()); } @@ -742,7 +711,7 @@ bool GLTFSerializer::parseGLTF(const hifi::ByteArray& data) { QJsonArray materials; if (getObjectArrayVal(jsFile, "materials", materials, _file.defined)) { - for (const QJsonValue& matVal : materials) { + foreach(const QJsonValue & matVal, materials) { if (matVal.isObject()) { success = success && addMaterial(matVal.toObject()); } @@ -751,7 +720,7 @@ bool GLTFSerializer::parseGLTF(const hifi::ByteArray& data) { QJsonArray meshes; if (getObjectArrayVal(jsFile, "meshes", meshes, _file.defined)) { - for (const QJsonValue& meshVal : meshes) { + foreach(const QJsonValue & meshVal, meshes) { if (meshVal.isObject()) { success = success && addMesh(meshVal.toObject()); } @@ -760,7 +729,7 @@ bool GLTFSerializer::parseGLTF(const hifi::ByteArray& data) { QJsonArray nodes; if (getObjectArrayVal(jsFile, "nodes", nodes, _file.defined)) { - for (const QJsonValue& nodeVal : nodes) { + foreach(const QJsonValue & nodeVal, nodes) { if (nodeVal.isObject()) { success = success && addNode(nodeVal.toObject()); } @@ -769,7 +738,7 @@ bool GLTFSerializer::parseGLTF(const hifi::ByteArray& data) { QJsonArray samplers; if (getObjectArrayVal(jsFile, "samplers", samplers, _file.defined)) { - for (const QJsonValue& samVal : samplers) { + foreach(const QJsonValue & samVal, samplers) { if (samVal.isObject()) { success = success && addSampler(samVal.toObject()); } @@ -778,7 +747,7 @@ bool GLTFSerializer::parseGLTF(const hifi::ByteArray& data) { QJsonArray scenes; if (getObjectArrayVal(jsFile, "scenes", scenes, _file.defined)) { - for (const QJsonValue& sceneVal : scenes) { + foreach(const QJsonValue & sceneVal, scenes) { if (sceneVal.isObject()) { success = success && addScene(sceneVal.toObject()); } @@ -787,7 +756,7 @@ bool GLTFSerializer::parseGLTF(const hifi::ByteArray& data) { QJsonArray skins; if (getObjectArrayVal(jsFile, "skins", skins, _file.defined)) { - for (const QJsonValue& skinVal : skins) { + foreach(const QJsonValue & skinVal, skins) { if (skinVal.isObject()) { success = success && addSkin(skinVal.toObject()); } @@ -796,22 +765,51 @@ bool GLTFSerializer::parseGLTF(const hifi::ByteArray& data) { QJsonArray textures; if (getObjectArrayVal(jsFile, "textures", textures, _file.defined)) { - for (const QJsonValue& texVal : textures) { + foreach(const QJsonValue & texVal, textures) { if (texVal.isObject()) { success = success && addTexture(texVal.toObject()); } } } - } + } return success; } -const glm::mat4& GLTFSerializer::getModelTransform(const GLTFNode& node) { - return node.transform; +glm::mat4 GLTFSerializer::getModelTransform(const GLTFNode& node) { + glm::mat4 tmat = glm::mat4(1.0); + + if (node.defined["matrix"] && node.matrix.size() == 16) { + tmat = glm::mat4(node.matrix[0], node.matrix[1], node.matrix[2], node.matrix[3], + node.matrix[4], node.matrix[5], node.matrix[6], node.matrix[7], + node.matrix[8], node.matrix[9], node.matrix[10], node.matrix[11], + node.matrix[12], node.matrix[13], node.matrix[14], node.matrix[15]); + } else { + + if (node.defined["scale"] && node.scale.size() == 3) { + glm::vec3 scale = glm::vec3(node.scale[0], node.scale[1], node.scale[2]); + glm::mat4 s = glm::mat4(1.0); + s = glm::scale(s, scale); + tmat = s * tmat; + } + + if (node.defined["rotation"] && node.rotation.size() == 4) { + //quat(x,y,z,w) to quat(w,x,y,z) + glm::quat rotquat = glm::quat(node.rotation[3], node.rotation[0], node.rotation[1], node.rotation[2]); + tmat = glm::mat4_cast(rotquat) * tmat; + } + + if (node.defined["translation"] && node.translation.size() == 3) { + glm::vec3 trans = glm::vec3(node.translation[0], node.translation[1], node.translation[2]); + glm::mat4 t = glm::mat4(1.0); + t = glm::translate(t, trans); + tmat = t * tmat; + } + } + return tmat; } void GLTFSerializer::getSkinInverseBindMatrices(std::vector>& inverseBindMatrixValues) { - for (auto& skin : _file.skins) { + for (auto &skin : _file.skins) { GLTFAccessor& indicesAccessor = _file.accessors[skin.inverseBindMatrices]; QVector matrices; addArrayFromAccessor(indicesAccessor, matrices); @@ -828,200 +826,111 @@ void GLTFSerializer::generateTargetData(int index, float weight, QVector; -ParentIndexMap findParentIndices(const QVector& nodes) { - ParentIndexMap parentIndices; - int numNodes = nodes.size(); - for (int nodeIndex = 0; nodeIndex < numNodes; ++nodeIndex) { - auto& gltfNode = nodes[nodeIndex]; - for (const auto& childIndex : gltfNode.children) { - parentIndices[childIndex] = nodeIndex; - } - } - return parentIndices; -} - -bool requiresNodeReordering(const ParentIndexMap& map) { - for (const auto& entry : map) { - if (entry.first < entry.second) { - return true; - } - } - return false; -} - -int findEdgeCount(const ParentIndexMap& parentIndices, int nodeIndex) { - auto parentsEnd = parentIndices.end(); - ParentIndexMap::const_iterator itr; - int result = 0; - while (parentsEnd != (itr = parentIndices.find(nodeIndex))) { - nodeIndex = itr->second; - ++result; - } - return result; -} - -using IndexBag = std::unordered_set; -using EdgeCountMap = std::map; -EdgeCountMap findEdgeCounts(int numNodes, const ParentIndexMap& map) { - EdgeCountMap edgeCounts; - // For each item, determine how many tranversals to a root node - for (int nodeIndex = 0; nodeIndex < numNodes; ++nodeIndex) { - // How many steps between this node and a root node? - int edgeCount = findEdgeCount(map, nodeIndex); - // Populate the result map - edgeCounts[edgeCount].insert(nodeIndex); - } - return edgeCounts; -} - -using ReorderMap = std::unordered_map; -ReorderMap buildReorderMap(const EdgeCountMap& map) { - ReorderMap result; - int newIndex = 0; - for (const auto& entry : map) { - const IndexBag& oldIndices = entry.second; - for (const auto& oldIndex : oldIndices) { - result.insert({ oldIndex, newIndex }); - ++newIndex; - } - } - return result; -} - -void reorderNodeIndices(QVector& indices, const ReorderMap& oldToNewIndexMap) { - for (auto& index : indices) { - index = oldToNewIndexMap.at(index); - } -} - -} // namespace gltf - -void GLTFFile::populateMaterialNames() { - // Build material names - QSet usedNames; - for (const auto& material : materials) { - if (!material.name.isEmpty()) { - usedNames.insert(material.name); - } - } - - int ukcount = 0; - const QString unknown{ "Default_%1" }; - for (auto& material : materials) { - QString generatedName = unknown.arg(ukcount++); - while (usedNames.contains(generatedName)) { - generatedName = unknown.arg(ukcount++); - } - material.name = generatedName; - material.defined.insert("name", true); - usedNames.insert(generatedName); - } -} - -void GLTFFile::reorderNodes(const std::unordered_map& oldToNewIndexMap) { - int numNodes = nodes.size(); - assert(numNodes == oldToNewIndexMap.size()); - QVector newNodes; - newNodes.resize(numNodes); - for (int oldIndex = 0; oldIndex < numNodes; ++oldIndex) { - const auto& oldNode = nodes[oldIndex]; - int newIndex = oldToNewIndexMap.at(oldIndex); - auto& newNode = newNodes[newIndex]; - // Write the new node - newNode = oldNode; - // Fixup the child indices - gltf::reorderNodeIndices(newNode.children, oldToNewIndexMap); - } - newNodes.swap(nodes); - - for (auto& subScene : scenes) { - gltf::reorderNodeIndices(subScene.nodes, oldToNewIndexMap); - } -} - -// Ensure that the GLTF nodes are ordered so -void GLTFFile::sortNodes() { - // Find all the parents - auto parentIndices = gltf::findParentIndices(nodes); - // If the nodes are already in a good order, we're done - if (!gltf::requiresNodeReordering(parentIndices)) { - return; - } - - auto edgeCounts = gltf::findEdgeCounts(nodes.size(), parentIndices); - auto oldToNewIndexMap = gltf::buildReorderMap(edgeCounts); - reorderNodes(oldToNewIndexMap); - assert(!gltf::requiresNodeReordering(gltf::findParentIndices(nodes))); -} - -void GLTFNode::normalizeTransform() { - if (defined["matrix"] && matrix.size() == 16) { - transform = glm::make_mat4(matrix.constData()); - } else { - transform = glm::mat4(1.0); - if (defined["scale"] && scale.size() == 3) { - glm::vec3 scaleVec = glm::make_vec3(scale.data()); - transform = glm::scale(transform, scaleVec); - } - - if (defined["rotation"] && rotation.size() == 4) { - glm::quat rotQ = glm::make_quat(rotation.data()); - transform = glm::mat4_cast(rotQ) * transform; - } - - if (defined["translation"] && translation.size() == 3) { - glm::vec3 transV = glm::make_vec3(translation.data()); - transform = glm::translate(glm::mat4(1.0), transV) * transform; - } - } -} - -void GLTFFile::normalizeNodeTransforms() { - for (auto& node : nodes) { - node.normalizeTransform(); - } -} - bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& mapping, const hifi::URL& url) { int numNodes = _file.nodes.size(); - - // Build joints - hfmModel.jointIndices["x"] = numNodes; - auto parentIndices = gltf::findParentIndices(_file.nodes); - const auto parentsEnd = parentIndices.end(); - for (int nodeIndex = 0; nodeIndex < numNodes; ++nodeIndex) { - HFMJoint joint; - auto& node = _file.nodes[nodeIndex]; - auto parentItr = parentIndices.find(nodeIndex); - if (parentsEnd == parentItr) { - joint.parentIndex = -1; - } else { - joint.parentIndex = parentItr->second; - } - joint.transform = getModelTransform(node); + //Build dependencies + QVector parents; + QVector sortedNodes; + parents.fill(-1, numNodes); + sortedNodes.reserve(numNodes); + int nodecount = 0; + foreach(auto &node, _file.nodes) { + foreach(int child, node.children) { + parents[child] = nodecount; + } + sortedNodes.push_back(nodecount); + ++nodecount; + } + + + // Build transforms + nodecount = 0; + foreach(auto &node, _file.nodes) { + // collect node transform + _file.nodes[nodecount].transforms.push_back(getModelTransform(node)); + int parentIndex = parents[nodecount]; + while (parentIndex != -1) { + const auto& parentNode = _file.nodes[parentIndex]; + // collect transforms for a node's parents, grandparents, etc. + _file.nodes[nodecount].transforms.push_back(getModelTransform(parentNode)); + parentIndex = parents[parentIndex]; + } + ++nodecount; + } + + + // since parent indices must exist in the sorted list before any of their children, sortedNodes might not be initialized in the correct order + // therefore we need to re-initialize the order in which nodes will be parsed + QVector hasBeenSorted; + hasBeenSorted.fill(false, numNodes); + int i = 0; // initial index + while (i < numNodes) { + int currentNode = sortedNodes[i]; + int parentIndex = parents[currentNode]; + if (parentIndex == -1 || hasBeenSorted[parentIndex]) { + hasBeenSorted[currentNode] = true; + ++i; + } else { + int j = i + 1; // index of node to be sorted + while (j < numNodes) { + int nextNode = sortedNodes[j]; + parentIndex = parents[nextNode]; + if (parentIndex == -1 || hasBeenSorted[parentIndex]) { + // swap with currentNode + hasBeenSorted[nextNode] = true; + sortedNodes[i] = nextNode; + sortedNodes[j] = currentNode; + ++i; + currentNode = sortedNodes[i]; + } + ++j; + } + } + } + + + // Build map from original to new indices + QVector originalToNewNodeIndexMap; + originalToNewNodeIndexMap.fill(-1, numNodes); + for (int i = 0; i < numNodes; ++i) { + originalToNewNodeIndexMap[sortedNodes[i]] = i; + } + + + // Build joints + HFMJoint joint; + joint.distanceToParent = 0; + hfmModel.jointIndices["x"] = numNodes; + QVector globalTransforms; + globalTransforms.resize(numNodes); + + for (int nodeIndex : sortedNodes) { + auto& node = _file.nodes[nodeIndex]; + + joint.parentIndex = parents[nodeIndex]; + if (joint.parentIndex != -1) { + joint.parentIndex = originalToNewNodeIndexMap[joint.parentIndex]; + } + joint.transform = node.transforms.first(); joint.translation = extractTranslation(joint.transform); joint.rotation = glmExtractRotation(joint.transform); glm::vec3 scale = extractScale(joint.transform); joint.postTransform = glm::scale(glm::mat4(), scale); - joint.globalTransform = joint.transform; - // Nodes are sorted, so we can apply the full transform just by getting the global transform of the already defined parent - if (joint.parentIndex != -1 && joint.parentIndex != nodeIndex) { - const auto& parentJoint = hfmModel.joints[(size_t)joint.parentIndex]; - joint.transform = parentJoint.transform * joint.transform; - joint.globalTransform = joint.globalTransform * parentJoint.globalTransform; - } else { - joint.globalTransform = hfmModel.offset * joint.globalTransform; + joint.parentIndex = parents[nodeIndex]; + globalTransforms[nodeIndex] = joint.transform; + if (joint.parentIndex != -1) { + globalTransforms[nodeIndex] = globalTransforms[joint.parentIndex] * globalTransforms[nodeIndex]; + joint.parentIndex = originalToNewNodeIndexMap[joint.parentIndex]; } joint.name = node.name; joint.isSkeletonJoint = false; hfmModel.joints.push_back(joint); } + hfmModel.shapeVertices.resize(hfmModel.joints.size()); + // get offset transform from mapping float unitScaleFactor = 1.0f; @@ -1036,9 +945,6 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& std::vector globalBindTransforms; jointInverseBindTransforms.resize(numNodes); globalBindTransforms.resize(numNodes); - // Lookup between the GLTF mesh and the skin - std::vector gltfMeshToSkin; - gltfMeshToSkin.resize(_file.meshes.size(), -1); hfmModel.hasSkeletonJoints = !_file.skins.isEmpty(); if (hfmModel.hasSkeletonJoints) { @@ -1046,8 +952,8 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& getSkinInverseBindMatrices(inverseBindValues); for (int jointIndex = 0; jointIndex < numNodes; ++jointIndex) { - int nodeIndex = jointIndex; - auto& joint = hfmModel.joints[jointIndex]; + int nodeIndex = sortedNodes[jointIndex]; + auto joint = hfmModel.joints[jointIndex]; for (int s = 0; s < _file.skins.size(); ++s) { const auto& skin = _file.skins[s]; @@ -1073,490 +979,642 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& glm::vec3 bindTranslation = extractTranslation(hfmModel.offset * glm::inverse(jointInverseBindTransforms[jointIndex])); hfmModel.bindExtents.addPoint(bindTranslation); } + hfmModel.joints[jointIndex] = joint; + } + } + + + // Build materials + QVector materialIDs; + QString unknown = "Default"; + int ukcount = 0; + foreach(auto material, _file.materials) { + if (!material.defined["name"]) { + QString name = unknown + QString::number(++ukcount); + material.name = name; + material.defined.insert("name", true); } - std::vector skinToRootJoint; - skinToRootJoint.resize(_file.skins.size(), 0); - for (int jointIndex = 0; jointIndex < numNodes; ++jointIndex) { - const auto& node = _file.nodes[jointIndex]; - if (node.skin != -1) { - skinToRootJoint[node.skin] = jointIndex; - if (node.mesh != -1) { - gltfMeshToSkin[node.mesh] = node.skin; + QString mid = material.name; + materialIDs.push_back(mid); + } + + for (int i = 0; i < materialIDs.size(); ++i) { + QString& matid = materialIDs[i]; + hfmModel.materials[matid] = HFMMaterial(); + HFMMaterial& hfmMaterial = hfmModel.materials[matid]; + hfmMaterial._material = std::make_shared(); + hfmMaterial.name = hfmMaterial.materialID = matid; + setHFMMaterial(hfmMaterial, _file.materials[i]); + } + + + // Build meshes + nodecount = 0; + hfmModel.meshExtents.reset(); + for (int nodeIndex : sortedNodes) { + auto& node = _file.nodes[nodeIndex]; + + if (node.defined["mesh"]) { + + hfmModel.meshes.append(HFMMesh()); + HFMMesh& mesh = hfmModel.meshes[hfmModel.meshes.size() - 1]; + if (!hfmModel.hasSkeletonJoints) { + HFMCluster cluster; + cluster.jointIndex = nodecount; + cluster.inverseBindMatrix = glm::mat4(); + cluster.inverseBindTransform = Transform(cluster.inverseBindMatrix); + mesh.clusters.append(cluster); + } else { // skinned model + for (int j = 0; j < numNodes; ++j) { + HFMCluster cluster; + cluster.jointIndex = j; + cluster.inverseBindMatrix = jointInverseBindTransforms[j]; + cluster.inverseBindTransform = Transform(cluster.inverseBindMatrix); + mesh.clusters.append(cluster); } } - } - - for (int skinIndex = 0; skinIndex < _file.skins.size(); ++skinIndex) { - const auto& skin = _file.skins[skinIndex]; - hfmModel.skinDeformers.emplace_back(); - auto& skinDeformer = hfmModel.skinDeformers.back(); - - // Add the nodes being referred to for skinning - for (int skinJointIndex : skin.joints) { - hfm::Cluster cluster; - cluster.jointIndex = skinJointIndex; - cluster.inverseBindMatrix = jointInverseBindTransforms[skinJointIndex]; - cluster.inverseBindTransform = Transform(cluster.inverseBindMatrix); - skinDeformer.clusters.push_back(cluster); - } - - // Always append a cluster referring to the root joint at the end - int rootJointIndex = skinToRootJoint[skinIndex]; - hfm::Cluster root; - root.jointIndex = rootJointIndex; + HFMCluster root; + root.jointIndex = 0; root.inverseBindMatrix = jointInverseBindTransforms[root.jointIndex]; root.inverseBindTransform = Transform(root.inverseBindMatrix); - skinDeformer.clusters.push_back(root); - } - } + mesh.clusters.append(root); - for (const auto& material : _file.materials) { - const QString& matid = material.name; - hfmModel.materials.emplace_back(); - HFMMaterial& hfmMaterial = hfmModel.materials.back(); - hfmMaterial._material = std::make_shared(); - hfmMaterial.materialID = matid; - setHFMMaterial(hfmMaterial, material); - } - - - int gltfMeshCount = _file.meshes.size(); - hfmModel.meshExtents.reset(); - std::vector> templateShapePerPrimPerGLTFMesh; - for (int gltfMeshIndex = 0; gltfMeshIndex < gltfMeshCount; ++gltfMeshIndex) { - const auto& gltfMesh = _file.meshes[gltfMeshIndex]; - hfmModel.meshes.emplace_back(); - // NOTE: The number of hfm meshes may be greater than the number of gltf meshes, if a gltf mesh has primitives with different vertex attributes. In that case, this mesh reference may be reassigned. - hfm::Mesh* meshPtr = &hfmModel.meshes.back(); - const size_t firstMeshIndexForGLTFMesh = hfmModel.meshes.size() - 1; - meshPtr->meshIndex = gltfMeshIndex; - templateShapePerPrimPerGLTFMesh.emplace_back(); - std::vector& templateShapePerPrim = templateShapePerPrimPerGLTFMesh.back(); - - QSet primitiveAttributes; - if (!gltfMesh.primitives.empty()) { - for (const auto& attribute : gltfMesh.primitives[0].attributes.values.keys()) { - primitiveAttributes.insert(attribute); - } - } - std::vector> primitiveAttributeVariants; - - int primCount = (int)gltfMesh.primitives.size(); - size_t hfmMeshIndex = firstMeshIndexForGLTFMesh; - for(int primIndex = 0; primIndex < primCount; ++primIndex) { - auto& primitive = gltfMesh.primitives[primIndex]; - - QList keys = primitive.attributes.values.keys(); - QSet newPrimitiveAttributes; - for (const auto& key : keys) { - newPrimitiveAttributes.insert(key); - } - if (newPrimitiveAttributes != primitiveAttributes) { - assert(primIndex != 0); - - // We need to use a different mesh because the vertex attributes are different - auto attributeVariantIt = std::find(primitiveAttributeVariants.cbegin(), primitiveAttributeVariants.cend(), newPrimitiveAttributes); - if (attributeVariantIt == primitiveAttributeVariants.cend()) { - // Need to allocate a new mesh - hfmModel.meshes.emplace_back(); - meshPtr = &hfmModel.meshes.back(); - hfmMeshIndex = hfmModel.meshes.size() - 1; - meshPtr->meshIndex = gltfMeshIndex; - primitiveAttributeVariants.push_back(newPrimitiveAttributes); - } else { - // An hfm mesh already exists for this gltf mesh with the same vertex attributes. Use it again. - auto variantIndex = (size_t)(attributeVariantIt - primitiveAttributeVariants.cbegin()); - hfmMeshIndex = firstMeshIndexForGLTFMesh + variantIndex; - meshPtr = &hfmModel.meshes[hfmMeshIndex]; + QList meshAttributes; + foreach(auto &primitive, _file.meshes[node.mesh].primitives) { + QList keys = primitive.attributes.values.keys(); + foreach (auto &key, keys) { + if (!meshAttributes.contains(key)) { + meshAttributes.push_back(key); + } } - primitiveAttributes = newPrimitiveAttributes; - } - // Now, allocate the part for the correct mesh... - hfm::Mesh& mesh = *meshPtr; - mesh.parts.emplace_back(); - hfm::MeshPart& part = mesh.parts.back(); - // ...and keep track of the relationship between the gltf mesh/primitive and the hfm mesh/part - templateShapePerPrim.emplace_back(); - hfm::Shape& templateShape = templateShapePerPrim.back(); - templateShape.mesh = (uint32_t)hfmMeshIndex; - templateShape.meshPart = (uint32_t)(mesh.parts.size() - 1); - templateShape.material = primitive.material; - - int indicesAccessorIdx = primitive.indices; - - GLTFAccessor& indicesAccessor = _file.accessors[indicesAccessorIdx]; - - // Buffers - constexpr int VERTEX_STRIDE = 3; - constexpr int NORMAL_STRIDE = 3; - constexpr int TEX_COORD_STRIDE = 2; - - QVector indices; - QVector vertices; - QVector normals; - QVector tangents; - QVector texcoords; - QVector texcoords2; - QVector colors; - QVector joints; - QVector weights; - - static int tangentStride = 4; - static int colorStride = 3; - static int jointStride = 4; - static int weightStride = 4; - - bool success = addArrayFromAccessor(indicesAccessor, indices); - - if (!success) { - qWarning(modelformat) << "There was a problem reading glTF INDICES data for model " << _url; - continue; } - // Increment the triangle indices by the current mesh vertex count so each mesh part can all reference the same buffers within the mesh - int prevMeshVerticesCount = mesh.vertices.count(); - QVector clusterJoints; - QVector clusterWeights; + foreach(auto &primitive, _file.meshes[node.mesh].primitives) { + HFMMeshPart part = HFMMeshPart(); - for(auto &key : keys) { - int accessorIdx = primitive.attributes.values[key]; - GLTFAccessor& accessor = _file.accessors[accessorIdx]; - const auto vertexAttribute = GLTFVertexAttribute::fromString(key); - switch (vertexAttribute) { - case GLTFVertexAttribute::POSITION: - success = addArrayFromAttribute(vertexAttribute, accessor, vertices); - break; + int indicesAccessorIdx = primitive.indices; - case GLTFVertexAttribute::NORMAL: - success = addArrayFromAttribute(vertexAttribute, accessor, normals); - break; + GLTFAccessor& indicesAccessor = _file.accessors[indicesAccessorIdx]; - case GLTFVertexAttribute::TANGENT: - success = addArrayFromAttribute(vertexAttribute, accessor, tangents); - tangentStride = GLTFAccessorType::count((GLTFAccessorType::Value)accessor.type); - break; + // Buffers + QVector indices; + QVector vertices; + int verticesStride = 3; + QVector normals; + int normalStride = 3; + QVector tangents; + int tangentStride = 4; + QVector texcoords; + int texCoordStride = 2; + QVector texcoords2; + int texCoord2Stride = 2; + QVector colors; + int colorStride = 3; + QVector joints; + int jointStride = 4; + QVector weights; + int weightStride = 4; - case GLTFVertexAttribute::TEXCOORD_0: - success = addArrayFromAttribute(vertexAttribute, accessor, texcoords); - break; + bool success = addArrayFromAccessor(indicesAccessor, indices); - case GLTFVertexAttribute::TEXCOORD_1: - success = addArrayFromAttribute(vertexAttribute, accessor, texcoords2); - break; - - case GLTFVertexAttribute::COLOR_0: - success = addArrayFromAttribute(vertexAttribute, accessor, colors); - colorStride = GLTFAccessorType::count((GLTFAccessorType::Value)accessor.type); - break; - - case GLTFVertexAttribute::JOINTS_0: - success = addArrayFromAttribute(vertexAttribute, accessor, joints); - jointStride = GLTFAccessorType::count((GLTFAccessorType::Value)accessor.type); - break; - - case GLTFVertexAttribute::WEIGHTS_0: - success = addArrayFromAttribute(vertexAttribute, accessor, weights); - weightStride = GLTFAccessorType::count((GLTFAccessorType::Value)accessor.type); - break; - - default: - success = false; - break; - } if (!success) { + qWarning(modelformat) << "There was a problem reading glTF INDICES data for model " << _url; continue; } - } - // Validation stage - if (indices.count() == 0) { - qWarning(modelformat) << "Missing indices for model " << _url; - continue; - } - if (vertices.count() == 0) { - qWarning(modelformat) << "Missing vertices for model " << _url; - continue; - } + // Increment the triangle indices by the current mesh vertex count so each mesh part can all reference the same buffers within the mesh + int prevMeshVerticesCount = mesh.vertices.count(); - int partVerticesCount = vertices.size() / 3; + QList keys = primitive.attributes.values.keys(); + QVector clusterJoints; + QVector clusterWeights; - QVector validatedIndices; - for (int n = 0; n < indices.count(); ++n) { - if (indices[n] < partVerticesCount) { - validatedIndices.push_back(indices[n] + prevMeshVerticesCount); - } else { - validatedIndices = QVector(); - break; + foreach(auto &key, keys) { + int accessorIdx = primitive.attributes.values[key]; + + GLTFAccessor& accessor = _file.accessors[accessorIdx]; + + if (key == "POSITION") { + if (accessor.type != GLTFAccessorType::VEC3) { + qWarning(modelformat) << "Invalid accessor type on glTF POSITION data for model " << _url; + continue; + } + + success = addArrayFromAccessor(accessor, vertices); + if (!success) { + qWarning(modelformat) << "There was a problem reading glTF POSITION data for model " << _url; + continue; + } + } else if (key == "NORMAL") { + if (accessor.type != GLTFAccessorType::VEC3) { + qWarning(modelformat) << "Invalid accessor type on glTF NORMAL data for model " << _url; + continue; + } + + success = addArrayFromAccessor(accessor, normals); + if (!success) { + qWarning(modelformat) << "There was a problem reading glTF NORMAL data for model " << _url; + continue; + } + } else if (key == "TANGENT") { + if (accessor.type == GLTFAccessorType::VEC4) { + tangentStride = 4; + } else if (accessor.type == GLTFAccessorType::VEC3) { + tangentStride = 3; + } else { + qWarning(modelformat) << "Invalid accessor type on glTF TANGENT data for model " << _url; + continue; + } + + success = addArrayFromAccessor(accessor, tangents); + if (!success) { + qWarning(modelformat) << "There was a problem reading glTF TANGENT data for model " << _url; + tangentStride = 0; + continue; + } + } else if (key == "TEXCOORD_0") { + success = addArrayFromAccessor(accessor, texcoords); + if (!success) { + qWarning(modelformat) << "There was a problem reading glTF TEXCOORD_0 data for model " << _url; + continue; + } + + if (accessor.type != GLTFAccessorType::VEC2) { + qWarning(modelformat) << "Invalid accessor type on glTF TEXCOORD_0 data for model " << _url; + continue; + } + } else if (key == "TEXCOORD_1") { + success = addArrayFromAccessor(accessor, texcoords2); + if (!success) { + qWarning(modelformat) << "There was a problem reading glTF TEXCOORD_1 data for model " << _url; + continue; + } + + if (accessor.type != GLTFAccessorType::VEC2) { + qWarning(modelformat) << "Invalid accessor type on glTF TEXCOORD_1 data for model " << _url; + continue; + } + } else if (key == "COLOR_0") { + if (accessor.type == GLTFAccessorType::VEC4) { + colorStride = 4; + } else if (accessor.type == GLTFAccessorType::VEC3) { + colorStride = 3; + } else { + qWarning(modelformat) << "Invalid accessor type on glTF COLOR_0 data for model " << _url; + continue; + } + + success = addArrayFromAccessor(accessor, colors); + if (!success) { + qWarning(modelformat) << "There was a problem reading glTF COLOR_0 data for model " << _url; + continue; + } + } else if (key == "JOINTS_0") { + if (accessor.type == GLTFAccessorType::VEC4) { + jointStride = 4; + } else if (accessor.type == GLTFAccessorType::VEC3) { + jointStride = 3; + } else if (accessor.type == GLTFAccessorType::VEC2) { + jointStride = 2; + } else if (accessor.type == GLTFAccessorType::SCALAR) { + jointStride = 1; + } else { + qWarning(modelformat) << "Invalid accessor type on glTF JOINTS_0 data for model " << _url; + continue; + } + + success = addArrayFromAccessor(accessor, joints); + if (!success) { + qWarning(modelformat) << "There was a problem reading glTF JOINTS_0 data for model " << _url; + continue; + } + } else if (key == "WEIGHTS_0") { + if (accessor.type == GLTFAccessorType::VEC4) { + weightStride = 4; + } else if (accessor.type == GLTFAccessorType::VEC3) { + weightStride = 3; + } else if (accessor.type == GLTFAccessorType::VEC2) { + weightStride = 2; + } else if (accessor.type == GLTFAccessorType::SCALAR) { + weightStride = 1; + } else { + qWarning(modelformat) << "Invalid accessor type on glTF WEIGHTS_0 data for model " << _url; + continue; + } + + success = addArrayFromAccessor(accessor, weights); + if (!success) { + qWarning(modelformat) << "There was a problem reading glTF WEIGHTS_0 data for model " << _url; + continue; + } + } } - } - if (validatedIndices.size() == 0) { - qWarning(modelformat) << "Indices out of range for model " << _url; - continue; - } - - part.triangleIndices.append(validatedIndices); - - mesh.vertices.reserve(mesh.vertices.size() + partVerticesCount); - for (int n = 0; n < vertices.size(); n = n + VERTEX_STRIDE) { - mesh.vertices.push_back(glm::vec3(vertices[n], vertices[n + 1], vertices[n + 2])); - } - - mesh.normals.reserve(mesh.normals.size() + partVerticesCount); - for (int n = 0; n < normals.size(); n = n + NORMAL_STRIDE) { - mesh.normals.push_back(glm::vec3(normals[n], normals[n + 1], normals[n + 2])); - } - - if (tangents.size() == partVerticesCount * tangentStride) { - mesh.tangents.reserve(mesh.tangents.size() + partVerticesCount); - for (int n = 0; n < tangents.size(); n += tangentStride) { - float tanW = tangentStride == 4 ? tangents[n + 3] : 1; - mesh.tangents.push_back(glm::vec3(tanW * tangents[n], tangents[n + 1], tanW * tangents[n + 2])); + // Validation stage + if (indices.count() == 0) { + qWarning(modelformat) << "Missing indices for model " << _url; + continue; } - } - - if (texcoords.size() == partVerticesCount * TEX_COORD_STRIDE) { - mesh.texCoords.reserve(mesh.texCoords.size() + partVerticesCount); - for (int n = 0; n < texcoords.size(); n = n + 2) { - mesh.texCoords.push_back(glm::vec2(texcoords[n], texcoords[n + 1])); + if (vertices.count() == 0) { + qWarning(modelformat) << "Missing vertices for model " << _url; + continue; } - } else if (primitiveAttributes.contains("TEXCOORD_0")) { - mesh.texCoords.resize(mesh.texCoords.size() + partVerticesCount); - } - if (texcoords2.size() == partVerticesCount * TEX_COORD_STRIDE) { - mesh.texCoords1.reserve(mesh.texCoords1.size() + partVerticesCount); - for (int n = 0; n < texcoords2.size(); n = n + 2) { - mesh.texCoords1.push_back(glm::vec2(texcoords2[n], texcoords2[n + 1])); - } - } else if (primitiveAttributes.contains("TEXCOORD_1")) { - mesh.texCoords1.resize(mesh.texCoords1.size() + partVerticesCount); - } + int partVerticesCount = vertices.size() / 3; - if (colors.size() == partVerticesCount * colorStride) { - mesh.colors.reserve(mesh.colors.size() + partVerticesCount); - for (int n = 0; n < colors.size(); n += colorStride) { - mesh.colors.push_back(glm::vec3(colors[n], colors[n + 1], colors[n + 2])); - } - } else if (primitiveAttributes.contains("COLOR_0")) { - mesh.colors.reserve(mesh.colors.size() + partVerticesCount); - for (int i = 0; i < partVerticesCount; ++i) { - mesh.colors.push_back(glm::vec3(1.0f)); - } - } + // generate the normals if they don't exist + if (normals.size() == 0) { + QVector newIndices; + QVector newVertices; + QVector newNormals; + QVector newTexcoords; + QVector newTexcoords2; + QVector newColors; + QVector newJoints; + QVector newWeights; - const int WEIGHTS_PER_VERTEX = 4; + for (int n = 0; n < indices.size(); n = n + 3) { + int v1_index = (indices[n + 0] * 3); + int v2_index = (indices[n + 1] * 3); + int v3_index = (indices[n + 2] * 3); - if (weights.size() == partVerticesCount * weightStride) { - for (int n = 0; n < weights.size(); n += weightStride) { - clusterWeights.push_back(weights[n]); - if (weightStride > 1) { - clusterWeights.push_back(weights[n + 1]); - if (weightStride > 2) { - clusterWeights.push_back(weights[n + 2]); - if (weightStride > 3) { - clusterWeights.push_back(weights[n + 3]); + glm::vec3 v1 = glm::vec3(vertices[v1_index], vertices[v1_index + 1], vertices[v1_index + 2]); + glm::vec3 v2 = glm::vec3(vertices[v2_index], vertices[v2_index + 1], vertices[v2_index + 2]); + glm::vec3 v3 = glm::vec3(vertices[v3_index], vertices[v3_index + 1], vertices[v3_index + 2]); + + newVertices.append(v1.x); + newVertices.append(v1.y); + newVertices.append(v1.z); + newVertices.append(v2.x); + newVertices.append(v2.y); + newVertices.append(v2.z); + newVertices.append(v3.x); + newVertices.append(v3.y); + newVertices.append(v3.z); + + glm::vec3 norm = glm::normalize(glm::cross(v2 - v1, v3 - v1)); + + newNormals.append(norm.x); + newNormals.append(norm.y); + newNormals.append(norm.z); + newNormals.append(norm.x); + newNormals.append(norm.y); + newNormals.append(norm.z); + newNormals.append(norm.x); + newNormals.append(norm.y); + newNormals.append(norm.z); + + if (texcoords.size() == partVerticesCount * texCoordStride) { + GLTF_APPEND_ARRAY_2(newTexcoords, texcoords) + } + + if (texcoords2.size() == partVerticesCount * texCoord2Stride) { + GLTF_APPEND_ARRAY_2(newTexcoords2, texcoords2) + } + + if (colors.size() == partVerticesCount * colorStride) { + if (colorStride == 4) { + GLTF_APPEND_ARRAY_4(newColors, colors) } else { + GLTF_APPEND_ARRAY_3(newColors, colors) + } + } + + if (joints.size() == partVerticesCount * jointStride) { + if (jointStride == 4) { + GLTF_APPEND_ARRAY_4(newJoints, joints) + } else if (jointStride == 3) { + GLTF_APPEND_ARRAY_3(newJoints, joints) + } else if (jointStride == 2) { + GLTF_APPEND_ARRAY_2(newJoints, joints) + } else { + GLTF_APPEND_ARRAY_1(newJoints, joints) + } + } + + if (weights.size() == partVerticesCount * weightStride) { + if (weightStride == 4) { + GLTF_APPEND_ARRAY_4(newWeights, weights) + } else if (weightStride == 3) { + GLTF_APPEND_ARRAY_3(newWeights, weights) + } else if (weightStride == 2) { + GLTF_APPEND_ARRAY_2(newWeights, weights) + } else { + GLTF_APPEND_ARRAY_1(newWeights, weights) + } + } + newIndices.append(n); + newIndices.append(n + 1); + newIndices.append(n + 2); + } + + vertices = newVertices; + normals = newNormals; + tangents = QVector(); + texcoords = newTexcoords; + texcoords2 = newTexcoords2; + colors = newColors; + joints = newJoints; + weights = newWeights; + indices = newIndices; + + partVerticesCount = vertices.size() / 3; + } + + QVector validatedIndices; + for (int n = 0; n < indices.count(); ++n) { + if (indices[n] < partVerticesCount) { + validatedIndices.push_back(indices[n] + prevMeshVerticesCount); + } else { + validatedIndices = QVector(); + break; + } + } + + if (validatedIndices.size() == 0) { + qWarning(modelformat) << "Indices out of range for model " << _url; + continue; + } + + part.triangleIndices.append(validatedIndices); + + for (int n = 0; n < vertices.size(); n = n + verticesStride) { + mesh.vertices.push_back(glm::vec3(vertices[n], vertices[n + 1], vertices[n + 2])); + } + + for (int n = 0; n < normals.size(); n = n + normalStride) { + mesh.normals.push_back(glm::vec3(normals[n], normals[n + 1], normals[n + 2])); + } + + // TODO: add correct tangent generation + if (tangents.size() == partVerticesCount * tangentStride) { + for (int n = 0; n < tangents.size(); n += tangentStride) { + float tanW = tangentStride == 4 ? tangents[n + 3] : 1; + mesh.tangents.push_back(glm::vec3(tanW * tangents[n], tangents[n + 1], tanW * tangents[n + 2])); + } + } else { + if (meshAttributes.contains("TANGENT")) { + for (int i = 0; i < partVerticesCount; ++i) { + mesh.tangents.push_back(glm::vec3(0.0f, 0.0f, 0.0f)); + } + } + } + + if (texcoords.size() == partVerticesCount * texCoordStride) { + for (int n = 0; n < texcoords.size(); n = n + 2) { + mesh.texCoords.push_back(glm::vec2(texcoords[n], texcoords[n + 1])); + } + } else { + if (meshAttributes.contains("TEXCOORD_0")) { + for (int i = 0; i < partVerticesCount; ++i) { + mesh.texCoords.push_back(glm::vec2(0.0f, 0.0f)); + } + } + } + + if (texcoords2.size() == partVerticesCount * texCoord2Stride) { + for (int n = 0; n < texcoords2.size(); n = n + 2) { + mesh.texCoords1.push_back(glm::vec2(texcoords2[n], texcoords2[n + 1])); + } + } else { + if (meshAttributes.contains("TEXCOORD_1")) { + for (int i = 0; i < partVerticesCount; ++i) { + mesh.texCoords1.push_back(glm::vec2(0.0f, 0.0f)); + } + } + } + + if (colors.size() == partVerticesCount * colorStride) { + for (int n = 0; n < colors.size(); n += colorStride) { + mesh.colors.push_back(glm::vec3(colors[n], colors[n + 1], colors[n + 2])); + } + } else { + if (meshAttributes.contains("COLOR_0")) { + for (int i = 0; i < partVerticesCount; ++i) { + mesh.colors.push_back(glm::vec3(1.0f, 1.0f, 1.0f)); + } + } + } + + if (joints.size() == partVerticesCount * jointStride) { + for (int n = 0; n < joints.size(); n += jointStride) { + clusterJoints.push_back(joints[n]); + if (jointStride > 1) { + clusterJoints.push_back(joints[n + 1]); + if (jointStride > 2) { + clusterJoints.push_back(joints[n + 2]); + if (jointStride > 3) { + clusterJoints.push_back(joints[n + 3]); + } else { + clusterJoints.push_back(0); + } + } else { + clusterJoints.push_back(0); + clusterJoints.push_back(0); + } + } else { + clusterJoints.push_back(0); + clusterJoints.push_back(0); + clusterJoints.push_back(0); + } + } + } else { + if (meshAttributes.contains("JOINTS_0")) { + for (int i = 0; i < partVerticesCount; ++i) { + for (int j = 0; j < 4; ++j) { + clusterJoints.push_back(0); + } + } + } + } + + if (weights.size() == partVerticesCount * weightStride) { + for (int n = 0; n < weights.size(); n += weightStride) { + clusterWeights.push_back(weights[n]); + if (weightStride > 1) { + clusterWeights.push_back(weights[n + 1]); + if (weightStride > 2) { + clusterWeights.push_back(weights[n + 2]); + if (weightStride > 3) { + clusterWeights.push_back(weights[n + 3]); + } else { + clusterWeights.push_back(0.0f); + } + } else { + clusterWeights.push_back(0.0f); clusterWeights.push_back(0.0f); } } else { clusterWeights.push_back(0.0f); clusterWeights.push_back(0.0f); + clusterWeights.push_back(0.0f); + } + } + } else { + if (meshAttributes.contains("WEIGHTS_0")) { + for (int i = 0; i < partVerticesCount; ++i) { + clusterWeights.push_back(1.0f); + for (int j = 1; j < 4; ++j) { + clusterWeights.push_back(0.0f); + } } - } else { - clusterWeights.push_back(0.0f); - clusterWeights.push_back(0.0f); - clusterWeights.push_back(0.0f); } } - } else if (primitiveAttributes.contains("WEIGHTS_0")) { - for (int i = 0; i < partVerticesCount; ++i) { - clusterWeights.push_back(1.0f); - for (int j = 0; j < WEIGHTS_PER_VERTEX; ++j) { - clusterWeights.push_back(0.0f); + + // Build weights (adapted from FBXSerializer.cpp) + if (hfmModel.hasSkeletonJoints) { + int prevMeshClusterIndexCount = mesh.clusterIndices.count(); + int prevMeshClusterWeightCount = mesh.clusterWeights.count(); + const int WEIGHTS_PER_VERTEX = 4; + const float ALMOST_HALF = 0.499f; + int numVertices = mesh.vertices.size() - prevMeshVerticesCount; + + // Append new cluster indices and weights for this mesh part + for (int i = 0; i < numVertices * WEIGHTS_PER_VERTEX; ++i) { + mesh.clusterIndices.push_back(mesh.clusters.size() - 1); + mesh.clusterWeights.push_back(0); } - } - } - // Compress floating point weights to uint16_t for graphics runtime - // TODO: If the GLTF skinning weights are already in integer format, we should just copy the data - if (!clusterWeights.empty()) { - size_t numWeights = 4 * (mesh.vertices.size() - (uint32_t)prevMeshVerticesCount); - size_t newWeightsStart = mesh.clusterWeights.size(); - size_t newWeightsEnd = newWeightsStart + numWeights; - mesh.clusterWeights.reserve(newWeightsEnd); - for (int weightIndex = 0; weightIndex < clusterWeights.size(); ++weightIndex) { - // Per the GLTF specification - uint16_t weight = std::round(clusterWeights[weightIndex] * 65535.0f); - mesh.clusterWeights.push_back(weight); - } - mesh.clusterWeightsPerVertex = WEIGHTS_PER_VERTEX; - } + for (int c = 0; c < clusterJoints.size(); ++c) { + mesh.clusterIndices[prevMeshClusterIndexCount + c] = + originalToNewNodeIndexMap[_file.skins[node.skin].joints[clusterJoints[c]]]; + } - if (joints.size() == partVerticesCount * jointStride) { - for (int n = 0; n < joints.size(); n += jointStride) { - mesh.clusterIndices.push_back(joints[n]); - if (jointStride > 1) { - mesh.clusterIndices.push_back(joints[n + 1]); - if (jointStride > 2) { - mesh.clusterIndices.push_back(joints[n + 2]); - if (jointStride > 3) { - mesh.clusterIndices.push_back(joints[n + 3]); - } else { - mesh.clusterIndices.push_back(0); + // normalize and compress to 16-bits + for (int i = 0; i < numVertices; ++i) { + int j = i * WEIGHTS_PER_VERTEX; + + float totalWeight = 0.0f; + for (int k = j; k < j + WEIGHTS_PER_VERTEX; ++k) { + totalWeight += clusterWeights[k]; + } + if (totalWeight > 0.0f) { + float weightScalingFactor = (float)(UINT16_MAX) / totalWeight; + for (int k = j; k < j + WEIGHTS_PER_VERTEX; ++k) { + mesh.clusterWeights[prevMeshClusterWeightCount + k] = (uint16_t)(weightScalingFactor * clusterWeights[k] + ALMOST_HALF); } } else { - mesh.clusterIndices.push_back(0); - mesh.clusterIndices.push_back(0); + mesh.clusterWeights[prevMeshClusterWeightCount + j] = (uint16_t)((float)(UINT16_MAX) + ALMOST_HALF); } - } else { - mesh.clusterIndices.push_back(0); - mesh.clusterIndices.push_back(0); - mesh.clusterIndices.push_back(0); - } - } - } else if (primitiveAttributes.contains("JOINTS_0")) { - for (int i = 0; i < partVerticesCount; ++i) { - for (int j = 0; j < 4; ++j) { - mesh.clusterIndices.push_back(0); - } - } - } + for (int clusterIndex = 0; clusterIndex < mesh.clusters.size() - 1; ++clusterIndex) { + ShapeVertices& points = hfmModel.shapeVertices.at(clusterIndex); + glm::vec3 globalMeshScale = extractScale(globalTransforms[nodeIndex]); + const glm::mat4 meshToJoint = glm::scale(glm::mat4(), globalMeshScale) * jointInverseBindTransforms[clusterIndex]; - if (!mesh.clusterIndices.empty()) { - int skinIndex = gltfMeshToSkin[gltfMeshIndex]; - if (skinIndex != -1) { - const auto& deformer = hfmModel.skinDeformers[(size_t)skinIndex]; - std::vector oldToNew; - oldToNew.resize(_file.nodes.size()); - for (uint16_t clusterIndex = 0; clusterIndex < deformer.clusters.size() - 1; ++clusterIndex) { - const auto& cluster = deformer.clusters[clusterIndex]; - oldToNew[(size_t)cluster.jointIndex] = clusterIndex; - } - } - } - - // populate the texture coordinates if they don't exist - if (mesh.texCoords.size() == 0 && !hfmModel.hasSkeletonJoints) { - for (int i = 0; i < part.triangleIndices.size(); ++i) { mesh.texCoords.push_back(glm::vec2(0.0, 1.0)); } - } - - // Build morph targets (blend shapes) - if (!primitive.targets.isEmpty()) { - - // Build list of blendshapes from FST - typedef QPair WeightedIndex; - hifi::VariantHash blendshapeMappings = mapping.value("bs").toHash(); - QMultiHash blendshapeIndices; - - for (int i = 0;; ++i) { - hifi::ByteArray blendshapeName = FACESHIFT_BLENDSHAPES[i]; - if (blendshapeName.isEmpty()) { - break; - } - QList mappings = blendshapeMappings.values(blendshapeName); - foreach (const QVariant& mapping, mappings) { - QVariantList blendshapeMapping = mapping.toList(); - blendshapeIndices.insert(blendshapeMapping.at(0).toByteArray(), WeightedIndex(i, blendshapeMapping.at(1).toFloat())); - } - } - - // glTF morph targets may or may not have names. if they are labeled, add them based on - // the corresponding names from the FST. otherwise, just add them in the order they are given - mesh.blendshapes.resize(blendshapeMappings.size()); - auto values = blendshapeIndices.values(); - auto keys = blendshapeIndices.keys(); - auto names = gltfMesh.extras.targetNames; - QVector weights = gltfMesh.weights; - - for (int weightedIndex = 0; weightedIndex < values.size(); ++weightedIndex) { - float weight = 0.1f; - int indexFromMapping = weightedIndex; - int targetIndex = weightedIndex; - hfmModel.blendshapeChannelNames.push_back("target_" + QString::number(weightedIndex)); - - if (!names.isEmpty()) { - targetIndex = names.indexOf(keys[weightedIndex]); - indexFromMapping = values[weightedIndex].first; - weight = weight * values[weightedIndex].second; - hfmModel.blendshapeChannelNames[weightedIndex] = keys[weightedIndex]; - } - HFMBlendshape& blendshape = mesh.blendshapes[indexFromMapping]; - blendshape.indices = part.triangleIndices; - auto target = primitive.targets[targetIndex]; - - QVector normals; - QVector vertices; - - if (weights.size() == primitive.targets.size()) { - int targetWeight = weights[targetIndex]; - if (targetWeight != 0) { - weight = weight * targetWeight; - } - } - - if (target.values.contains((QString) "NORMAL")) { - generateTargetData(target.values.value((QString) "NORMAL"), weight, normals); - } - if (target.values.contains((QString) "POSITION")) { - generateTargetData(target.values.value((QString) "POSITION"), weight, vertices); - } - bool isNewBlendshape = blendshape.vertices.size() < vertices.size(); - int count = 0; - for (int i : blendshape.indices) { - if (isNewBlendshape) { - blendshape.vertices.push_back(vertices[i]); - blendshape.normals.push_back(normals[i]); - } else { - blendshape.vertices[count] = blendshape.vertices[count] + vertices[i]; - blendshape.normals[count] = blendshape.normals[count] + normals[i]; - ++count; + const float EXPANSION_WEIGHT_THRESHOLD = 0.25f; + if (mesh.clusterWeights[j] >= EXPANSION_WEIGHT_THRESHOLD) { + // TODO: fix transformed vertices being pushed back + auto& vertex = mesh.vertices[i]; + const glm::mat4 vertexTransform = meshToJoint * (glm::translate(glm::mat4(), vertex)); + glm::vec3 transformedVertex = hfmModel.joints[clusterIndex].translation * (extractTranslation(vertexTransform)); + points.push_back(transformedVertex); + } } } } - } + + if (primitive.defined["material"]) { + part.materialID = materialIDs[primitive.material]; + } + mesh.parts.push_back(part); + + // populate the texture coordinates if they don't exist + if (mesh.texCoords.size() == 0 && !hfmModel.hasSkeletonJoints) { + for (int i = 0; i < part.triangleIndices.size(); ++i) { mesh.texCoords.push_back(glm::vec2(0.0, 1.0)); } + } + + // Build morph targets (blend shapes) + if (!primitive.targets.isEmpty()) { + + // Build list of blendshapes from FST + typedef QPair WeightedIndex; + hifi::VariantHash blendshapeMappings = mapping.value("bs").toHash(); + QMultiHash blendshapeIndices; + + for (int i = 0;; ++i) { + hifi::ByteArray blendshapeName = FACESHIFT_BLENDSHAPES[i]; + if (blendshapeName.isEmpty()) { + break; + } + QList mappings = blendshapeMappings.values(blendshapeName); + foreach (const QVariant& mapping, mappings) { + QVariantList blendshapeMapping = mapping.toList(); + blendshapeIndices.insert(blendshapeMapping.at(0).toByteArray(), WeightedIndex(i, blendshapeMapping.at(1).toFloat())); + } + } + + // glTF morph targets may or may not have names. if they are labeled, add them based on + // the corresponding names from the FST. otherwise, just add them in the order they are given + mesh.blendshapes.resize(blendshapeMappings.size()); + auto values = blendshapeIndices.values(); + auto keys = blendshapeIndices.keys(); + auto names = _file.meshes[node.mesh].extras.targetNames; + QVector weights = _file.meshes[node.mesh].weights; + + for (int weightedIndex = 0; weightedIndex < values.size(); ++weightedIndex) { + float weight = 0.1f; + int indexFromMapping = weightedIndex; + int targetIndex = weightedIndex; + hfmModel.blendshapeChannelNames.push_back("target_" + QString::number(weightedIndex)); + + if (!names.isEmpty()) { + targetIndex = names.indexOf(keys[weightedIndex]); + indexFromMapping = values[weightedIndex].first; + weight = weight * values[weightedIndex].second; + hfmModel.blendshapeChannelNames[weightedIndex] = keys[weightedIndex]; + } + HFMBlendshape& blendshape = mesh.blendshapes[indexFromMapping]; + blendshape.indices = part.triangleIndices; + auto target = primitive.targets[targetIndex]; + + QVector normals; + QVector vertices; + + if (weights.size() == primitive.targets.size()) { + int targetWeight = weights[targetIndex]; + if (targetWeight != 0) { + weight = weight * targetWeight; + } + } + + if (target.values.contains((QString) "NORMAL")) { + generateTargetData(target.values.value((QString) "NORMAL"), weight, normals); + } + if (target.values.contains((QString) "POSITION")) { + generateTargetData(target.values.value((QString) "POSITION"), weight, vertices); + } + bool isNewBlendshape = blendshape.vertices.size() < vertices.size(); + int count = 0; + for (int i : blendshape.indices) { + if (isNewBlendshape) { + blendshape.vertices.push_back(vertices[i]); + blendshape.normals.push_back(normals[i]); + } else { + blendshape.vertices[count] = blendshape.vertices[count] + vertices[i]; + blendshape.normals[count] = blendshape.normals[count] + normals[i]; + ++count; + } + } + } + } + + foreach(const glm::vec3& vertex, mesh.vertices) { + glm::vec3 transformedVertex = glm::vec3(globalTransforms[nodeIndex] * glm::vec4(vertex, 1.0f)); + mesh.meshExtents.addPoint(transformedVertex); + hfmModel.meshExtents.addPoint(transformedVertex); + } + } + + // Add epsilon to mesh extents to compensate for planar meshes + mesh.meshExtents.minimum -= glm::vec3(EPSILON, EPSILON, EPSILON); + mesh.meshExtents.maximum += glm::vec3(EPSILON, EPSILON, EPSILON); + hfmModel.meshExtents.minimum -= glm::vec3(EPSILON, EPSILON, EPSILON); + hfmModel.meshExtents.maximum += glm::vec3(EPSILON, EPSILON, EPSILON); + + mesh.meshIndex = hfmModel.meshes.size(); } - } - - - // Create the instance shapes for each transform node - for (int nodeIndex = 0; nodeIndex < numNodes; ++nodeIndex) { - const auto& node = _file.nodes[nodeIndex]; - if (-1 == node.mesh) { - continue; - } - - const auto& gltfMesh = _file.meshes[node.mesh]; - const auto& templateShapePerPrim = templateShapePerPrimPerGLTFMesh[node.mesh]; - int primCount = (int)gltfMesh.primitives.size(); - for (int primIndex = 0; primIndex < primCount; ++primIndex) { - const auto& templateShape = templateShapePerPrim[primIndex]; - hfmModel.shapes.push_back(templateShape); - auto& hfmShape = hfmModel.shapes.back(); - // Everything else is already defined (mesh, meshPart, material), so just define the new transform and deformer if present - hfmShape.joint = nodeIndex; - hfmShape.skinDeformer = node.skin != -1 ? node.skin : hfm::UNDEFINED_KEY; - } - } - - // TODO: Fix skinning and remove this workaround which disables skinning - // TODO: Restore after testing - { - std::vector meshToRootJoint; - meshToRootJoint.resize(hfmModel.meshes.size(), -1); - std::vector meshToClusterSize; - meshToClusterSize.resize(hfmModel.meshes.size()); - for (auto& shape : hfmModel.shapes) { - shape.skinDeformer = hfm::UNDEFINED_KEY; - } - - for (auto& mesh : hfmModel.meshes) { - mesh.clusterWeights.clear(); - mesh.clusterIndices.clear(); - mesh.clusterWeightsPerVertex = 0; - } - + ++nodecount; } return true; @@ -1578,8 +1636,9 @@ std::unique_ptr GLTFSerializer::getFactory() const { } HFMModel::Pointer GLTFSerializer::read(const hifi::ByteArray& data, const hifi::VariantHash& mapping, const hifi::URL& url) { - _url = url; + _url = url; + // Normalize url for local files hifi::URL normalizeUrl = DependencyManager::get()->normalizeURL(_url); if (normalizeUrl.scheme().isEmpty() || (normalizeUrl.scheme() == "file")) { @@ -1589,9 +1648,6 @@ HFMModel::Pointer GLTFSerializer::read(const hifi::ByteArray& data, const hifi:: if (parseGLTF(data)) { //_file.dump(); - _file.sortNodes(); - _file.populateMaterialNames(); - _file.normalizeNodeTransforms(); auto hfmModelPtr = std::make_shared(); HFMModel& hfmModel = *hfmModelPtr; buildGeometry(hfmModel, mapping, _url); @@ -1615,7 +1671,7 @@ bool GLTFSerializer::readBinary(const QString& url, hifi::ByteArray& outdata) { hifi::URL binaryUrl = _url.resolved(url); std::tie(success, outdata) = requestData(binaryUrl); } - + return success; } @@ -1628,8 +1684,8 @@ bool GLTFSerializer::doesResourceExist(const QString& url) { } std::tuple GLTFSerializer::requestData(hifi::URL& url) { - auto request = - DependencyManager::get()->createResourceRequest(nullptr, url, true, -1, "GLTFSerializer::requestData"); + auto request = DependencyManager::get()->createResourceRequest( + nullptr, url, true, -1, "GLTFSerializer::requestData"); if (!request) { return std::make_tuple(false, hifi::ByteArray()); @@ -1648,16 +1704,19 @@ std::tuple GLTFSerializer::requestData(hifi::URL& url) { } hifi::ByteArray GLTFSerializer::requestEmbeddedData(const QString& url) { - QString binaryUrl = url.split(",")[1]; + QString binaryUrl = url.split(",")[1]; return binaryUrl.isEmpty() ? hifi::ByteArray() : QByteArray::fromBase64(binaryUrl.toUtf8()); } + QNetworkReply* GLTFSerializer::request(hifi::URL& url, bool isTest) { if (!qApp) { return nullptr; } bool aboutToQuit{ false }; - auto connection = QObject::connect(qApp, &QCoreApplication::aboutToQuit, [&] { aboutToQuit = true; }); + auto connection = QObject::connect(qApp, &QCoreApplication::aboutToQuit, [&] { + aboutToQuit = true; + }); QNetworkAccessManager& networkAccessManager = NetworkAccessManager::getInstance(); QNetworkRequest netRequest(url); netRequest.setAttribute(QNetworkRequest::FollowRedirectsAttribute, true); @@ -1666,18 +1725,18 @@ QNetworkReply* GLTFSerializer::request(hifi::URL& url, bool isTest) { netReply->deleteLater(); return nullptr; } - QEventLoop loop; // Create an event loop that will quit when we get the finished signal + QEventLoop loop; // Create an event loop that will quit when we get the finished signal QObject::connect(netReply, SIGNAL(finished()), &loop, SLOT(quit())); - loop.exec(); // Nothing is going to happen on this whole run thread until we get this + loop.exec(); // Nothing is going to happen on this whole run thread until we get this QObject::disconnect(connection); - return netReply; // trying to sync later on. + return netReply; // trying to sync later on. } HFMTexture GLTFSerializer::getHFMTexture(const GLTFTexture& texture) { HFMTexture fbxtex = HFMTexture(); fbxtex.texcoordSet = 0; - + if (texture.defined["source"]) { QString url = _file.images[texture.source].uri; @@ -1685,10 +1744,10 @@ HFMTexture GLTFSerializer::getHFMTexture(const GLTFTexture& texture) { hifi::URL textureUrl = _url.resolved(url); fbxtex.name = fname; fbxtex.filename = textureUrl.toEncoded(); - + if (_url.toString().endsWith("glb") && !_glbBinary.isEmpty()) { int bufferView = _file.images[texture.source].bufferView; - + GLTFBufferView& imagesBufferview = _file.bufferviews[bufferView]; int offset = imagesBufferview.byteOffset; int length = imagesBufferview.byteLength; @@ -1698,7 +1757,7 @@ HFMTexture GLTFSerializer::getHFMTexture(const GLTFTexture& texture) { } if (url.contains("data:image/jpeg;base64,") || url.contains("data:image/png;base64,")) { - fbxtex.content = requestEmbeddedData(url); + fbxtex.content = requestEmbeddedData(url); } } return fbxtex; @@ -1728,12 +1787,12 @@ void GLTFSerializer::setHFMMaterial(HFMMaterial& hfmMat, const GLTFMaterial& mat hfmMat.emissiveTexture = getHFMTexture(_file.textures[material.emissiveTexture]); hfmMat.useEmissiveMap = true; } - + if (material.defined["normalTexture"]) { hfmMat.normalTexture = getHFMTexture(_file.textures[material.normalTexture]); hfmMat.useNormalMap = true; } - + if (material.defined["occlusionTexture"]) { hfmMat.occlusionTexture = getHFMTexture(_file.textures[material.occlusionTexture]); hfmMat.useOcclusionMap = true; @@ -1761,7 +1820,7 @@ void GLTFSerializer::setHFMMaterial(HFMMaterial& hfmMat, const GLTFMaterial& mat if (material.pbrMetallicRoughness.defined["roughnessFactor"]) { hfmMat._material->setRoughness(material.pbrMetallicRoughness.roughnessFactor); } - if (material.pbrMetallicRoughness.defined["baseColorFactor"] && + if (material.pbrMetallicRoughness.defined["baseColorFactor"] && material.pbrMetallicRoughness.baseColorFactor.size() == 4) { glm::vec3 dcolor = glm::vec3(material.pbrMetallicRoughness.baseColorFactor[0], material.pbrMetallicRoughness.baseColorFactor[1], @@ -1771,10 +1830,13 @@ void GLTFSerializer::setHFMMaterial(HFMMaterial& hfmMat, const GLTFMaterial& mat hfmMat._material->setOpacity(material.pbrMetallicRoughness.baseColorFactor[3]); } } + } -template -bool GLTFSerializer::readArray(const hifi::ByteArray& bin, int byteOffset, int count, QVector& outarray, int accessorType) { +template +bool GLTFSerializer::readArray(const hifi::ByteArray& bin, int byteOffset, int count, + QVector& outarray, int accessorType) { + QDataStream blobstream(bin); blobstream.setByteOrder(QDataStream::LittleEndian); blobstream.setVersion(QDataStream::Qt_5_9); @@ -1783,31 +1845,31 @@ bool GLTFSerializer::readArray(const hifi::ByteArray& bin, int byteOffset, int c int bufferCount = 0; switch (accessorType) { - case GLTFAccessorType::SCALAR: - bufferCount = 1; - break; - case GLTFAccessorType::VEC2: - bufferCount = 2; - break; - case GLTFAccessorType::VEC3: - bufferCount = 3; - break; - case GLTFAccessorType::VEC4: - bufferCount = 4; - break; - case GLTFAccessorType::MAT2: - bufferCount = 4; - break; - case GLTFAccessorType::MAT3: - bufferCount = 9; - break; - case GLTFAccessorType::MAT4: - bufferCount = 16; - break; - default: - qWarning(modelformat) << "Unknown accessorType: " << accessorType; - blobstream.setDevice(nullptr); - return false; + case GLTFAccessorType::SCALAR: + bufferCount = 1; + break; + case GLTFAccessorType::VEC2: + bufferCount = 2; + break; + case GLTFAccessorType::VEC3: + bufferCount = 3; + break; + case GLTFAccessorType::VEC4: + bufferCount = 4; + break; + case GLTFAccessorType::MAT2: + bufferCount = 4; + break; + case GLTFAccessorType::MAT3: + bufferCount = 9; + break; + case GLTFAccessorType::MAT4: + bufferCount = 16; + break; + default: + qWarning(modelformat) << "Unknown accessorType: " << accessorType; + blobstream.setDevice(nullptr); + return false; } for (int i = 0; i < count; ++i) { for (int j = 0; j < bufferCount; ++j) { @@ -1825,142 +1887,31 @@ bool GLTFSerializer::readArray(const hifi::ByteArray& bin, int byteOffset, int c blobstream.setDevice(nullptr); return true; } -template -bool GLTFSerializer::addArrayOfType(const hifi::ByteArray& bin, - int byteOffset, - int count, - QVector& outarray, - int accessorType, - int componentType) { +template +bool GLTFSerializer::addArrayOfType(const hifi::ByteArray& bin, int byteOffset, int count, + QVector& outarray, int accessorType, int componentType) { + switch (componentType) { - case GLTFAccessorComponentType::BYTE: {} - case GLTFAccessorComponentType::UNSIGNED_BYTE: { - return readArray(bin, byteOffset, count, outarray, accessorType); - } - case GLTFAccessorComponentType::SHORT: { - return readArray(bin, byteOffset, count, outarray, accessorType); - } - case GLTFAccessorComponentType::UNSIGNED_INT: { - return readArray(bin, byteOffset, count, outarray, accessorType); - } - case GLTFAccessorComponentType::UNSIGNED_SHORT: { - return readArray(bin, byteOffset, count, outarray, accessorType); - } - case GLTFAccessorComponentType::FLOAT: { - return readArray(bin, byteOffset, count, outarray, accessorType); - } + case GLTFAccessorComponentType::BYTE: {} + case GLTFAccessorComponentType::UNSIGNED_BYTE: { + return readArray(bin, byteOffset, count, outarray, accessorType); + } + case GLTFAccessorComponentType::SHORT: { + return readArray(bin, byteOffset, count, outarray, accessorType); + } + case GLTFAccessorComponentType::UNSIGNED_INT: { + return readArray(bin, byteOffset, count, outarray, accessorType); + } + case GLTFAccessorComponentType::UNSIGNED_SHORT: { + return readArray(bin, byteOffset, count, outarray, accessorType); + } + case GLTFAccessorComponentType::FLOAT: { + return readArray(bin, byteOffset, count, outarray, accessorType); + } } return false; } - -template -bool GLTFSerializer::addArrayFromAttribute(GLTFVertexAttribute::Value vertexAttribute, GLTFAccessor& accessor, QVector& outarray) { - switch (vertexAttribute) { - case GLTFVertexAttribute::POSITION: - if (accessor.type != GLTFAccessorType::VEC3) { - qWarning(modelformat) << "Invalid accessor type on glTF POSITION data for model " << _url; - return false; - } - - if (!addArrayFromAccessor(accessor, outarray)) { - qWarning(modelformat) << "There was a problem reading glTF POSITION data for model " << _url; - return false; - } - break; - - case GLTFVertexAttribute::NORMAL: - if (accessor.type != GLTFAccessorType::VEC3) { - qWarning(modelformat) << "Invalid accessor type on glTF NORMAL data for model " << _url; - return false; - } - - if (!addArrayFromAccessor(accessor, outarray)) { - qWarning(modelformat) << "There was a problem reading glTF NORMAL data for model " << _url; - return false; - } - break; - - case GLTFVertexAttribute::TANGENT: - if (accessor.type != GLTFAccessorType::VEC4 && accessor.type != GLTFAccessorType::VEC3) { - qWarning(modelformat) << "Invalid accessor type on glTF TANGENT data for model " << _url; - return false; - } - - if (!addArrayFromAccessor(accessor, outarray)) { - qWarning(modelformat) << "There was a problem reading glTF TANGENT data for model " << _url; - return false; - } - break; - - case GLTFVertexAttribute::TEXCOORD_0: - if (accessor.type != GLTFAccessorType::VEC2) { - qWarning(modelformat) << "Invalid accessor type on glTF TEXCOORD_0 data for model " << _url; - return false; - } - - if (!addArrayFromAccessor(accessor, outarray)) { - qWarning(modelformat) << "There was a problem reading glTF TEXCOORD_0 data for model " << _url; - return false; - } - break; - - case GLTFVertexAttribute::TEXCOORD_1: - if (accessor.type != GLTFAccessorType::VEC2) { - qWarning(modelformat) << "Invalid accessor type on glTF TEXCOORD_1 data for model " << _url; - return false; - } - if (!addArrayFromAccessor(accessor, outarray)) { - qWarning(modelformat) << "There was a problem reading glTF TEXCOORD_1 data for model " << _url; - return false; - } - break; - - case GLTFVertexAttribute::COLOR_0: - if (accessor.type != GLTFAccessorType::VEC4 && accessor.type != GLTFAccessorType::VEC3) { - qWarning(modelformat) << "Invalid accessor type on glTF COLOR_0 data for model " << _url; - return false; - } - - if (!addArrayFromAccessor(accessor, outarray)) { - qWarning(modelformat) << "There was a problem reading glTF COLOR_0 data for model " << _url; - return false; - } - break; - - case GLTFVertexAttribute::JOINTS_0: - if (accessor.type < GLTFAccessorType::SCALAR || accessor.type > GLTFAccessorType::VEC4) { - qWarning(modelformat) << "Invalid accessor type on glTF JOINTS_0 data for model " << _url; - return false; - } - - if (!addArrayFromAccessor(accessor, outarray)) { - qWarning(modelformat) << "There was a problem reading glTF JOINTS_0 data for model " << _url; - return false; - } - break; - - case GLTFVertexAttribute::WEIGHTS_0: - if (accessor.type < GLTFAccessorType::SCALAR || accessor.type > GLTFAccessorType::VEC4) { - qWarning(modelformat) << "Invalid accessor type on glTF WEIGHTS_0 data for model " << _url; - return false; - } - - if (!addArrayFromAccessor(accessor, outarray)) { - qWarning(modelformat) << "There was a problem reading glTF WEIGHTS_0 data for model " << _url; - return false; - } - break; - - default: - qWarning(modelformat) << "Unexpected attribute type" << _url; - return false; - } - - - return true; -} - template bool GLTFSerializer::addArrayFromAccessor(GLTFAccessor& accessor, QVector& outarray) { bool success = true; @@ -2006,7 +1957,7 @@ bool GLTFSerializer::addArrayFromAccessor(GLTFAccessor& accessor, QVector& ou if (success) { for (int i = 0; i < accessor.sparse.count; ++i) { - if ((i * 3) + 2 < out_sparse_values_array.size()) { + if ((i * 3) + 2 < out_sparse_values_array.size()) { if ((out_sparse_indices_array[i] * 3) + 2 < outarray.length()) { for (int j = 0; j < 3; ++j) { outarray[(out_sparse_indices_array[i] * 3) + j] = out_sparse_values_array[(i * 3) + j]; @@ -2028,16 +1979,14 @@ bool GLTFSerializer::addArrayFromAccessor(GLTFAccessor& accessor, QVector& ou return success; } -void GLTFSerializer::retriangulate(const QVector& inIndices, - const QVector& in_vertices, - const QVector& in_normals, - QVector& outIndices, - QVector& out_vertices, - QVector& out_normals) { +void GLTFSerializer::retriangulate(const QVector& inIndices, const QVector& in_vertices, + const QVector& in_normals, QVector& outIndices, + QVector& out_vertices, QVector& out_normals) { for (int i = 0; i < inIndices.size(); i = i + 3) { + int idx1 = inIndices[i]; - int idx2 = inIndices[i + 1]; - int idx3 = inIndices[i + 2]; + int idx2 = inIndices[i+1]; + int idx3 = inIndices[i+2]; out_vertices.push_back(in_vertices[idx1]); out_vertices.push_back(in_vertices[idx2]); @@ -2048,8 +1997,8 @@ void GLTFSerializer::retriangulate(const QVector& inIndices, out_normals.push_back(in_normals[idx3]); outIndices.push_back(i); - outIndices.push_back(i + 1); - outIndices.push_back(i + 2); + outIndices.push_back(i+1); + outIndices.push_back(i+2); } } @@ -2058,7 +2007,7 @@ void GLTFSerializer::glTFDebugDump() { for (GLTFNode node : _file.nodes) { if (node.defined["mesh"]) { qCDebug(modelformat) << "\n"; - qCDebug(modelformat) << " node_transform" << node.transform; + qCDebug(modelformat) << " node_transforms" << node.transforms; qCDebug(modelformat) << "\n"; } } @@ -2086,7 +2035,144 @@ void GLTFSerializer::glTFDebugDump() { } void GLTFSerializer::hfmDebugDump(const HFMModel& hfmModel) { - hfmModel.debugDump(); + qCDebug(modelformat) << "---------------- hfmModel ----------------"; + qCDebug(modelformat) << " hasSkeletonJoints =" << hfmModel.hasSkeletonJoints; + qCDebug(modelformat) << " offset =" << hfmModel.offset; + + qCDebug(modelformat) << " neckPivot = " << hfmModel.neckPivot; + + qCDebug(modelformat) << " bindExtents.size() = " << hfmModel.bindExtents.size(); + qCDebug(modelformat) << " meshExtents.size() = " << hfmModel.meshExtents.size(); + + qCDebug(modelformat) << " jointIndices.size() =" << hfmModel.jointIndices.size(); + qCDebug(modelformat) << " joints.count() =" << hfmModel.joints.count(); + qCDebug(modelformat) << "---------------- Meshes ----------------"; + qCDebug(modelformat) << " meshes.count() =" << hfmModel.meshes.count(); + qCDebug(modelformat) << " blendshapeChannelNames = " << hfmModel.blendshapeChannelNames; + foreach(HFMMesh mesh, hfmModel.meshes) { + qCDebug(modelformat) << "\n"; + qCDebug(modelformat) << " meshpointer =" << mesh._mesh.get(); + qCDebug(modelformat) << " meshindex =" << mesh.meshIndex; + qCDebug(modelformat) << " vertices.count() =" << mesh.vertices.size(); + qCDebug(modelformat) << " colors.count() =" << mesh.colors.count(); + qCDebug(modelformat) << " normals.count() =" << mesh.normals.size(); + qCDebug(modelformat) << " tangents.count() =" << mesh.tangents.size(); + qCDebug(modelformat) << " colors.count() =" << mesh.colors.count(); + qCDebug(modelformat) << " texCoords.count() =" << mesh.texCoords.count(); + qCDebug(modelformat) << " texCoords1.count() =" << mesh.texCoords1.count(); + qCDebug(modelformat) << " clusterIndices.count() =" << mesh.clusterIndices.count(); + qCDebug(modelformat) << " clusterWeights.count() =" << mesh.clusterWeights.count(); + qCDebug(modelformat) << " modelTransform =" << mesh.modelTransform; + qCDebug(modelformat) << " parts.count() =" << mesh.parts.count(); + qCDebug(modelformat) << "---------------- Meshes (blendshapes)--------"; + foreach(HFMBlendshape bshape, mesh.blendshapes) { + qCDebug(modelformat) << "\n"; + qCDebug(modelformat) << " bshape.indices.count() =" << bshape.indices.count(); + qCDebug(modelformat) << " bshape.vertices.count() =" << bshape.vertices.count(); + qCDebug(modelformat) << " bshape.normals.count() =" << bshape.normals.count(); + qCDebug(modelformat) << "\n"; + } + qCDebug(modelformat) << "---------------- Meshes (meshparts)--------"; + foreach(HFMMeshPart meshPart, mesh.parts) { + qCDebug(modelformat) << "\n"; + qCDebug(modelformat) << " quadIndices.count() =" << meshPart.quadIndices.count(); + qCDebug(modelformat) << " triangleIndices.count() =" << meshPart.triangleIndices.count(); + qCDebug(modelformat) << " materialID =" << meshPart.materialID; + qCDebug(modelformat) << "\n"; + + } + qCDebug(modelformat) << "---------------- Meshes (clusters)--------"; + qCDebug(modelformat) << " clusters.count() =" << mesh.clusters.count(); + foreach(HFMCluster cluster, mesh.clusters) { + qCDebug(modelformat) << "\n"; + qCDebug(modelformat) << " jointIndex =" << cluster.jointIndex; + qCDebug(modelformat) << " inverseBindMatrix =" << cluster.inverseBindMatrix; + qCDebug(modelformat) << "\n"; + } + qCDebug(modelformat) << "\n"; + } + qCDebug(modelformat) << "---------------- AnimationFrames ----------------"; + foreach(HFMAnimationFrame anim, hfmModel.animationFrames) { + qCDebug(modelformat) << " anim.translations = " << anim.translations; + qCDebug(modelformat) << " anim.rotations = " << anim.rotations; + } + QList mitomona_keys = hfmModel.meshIndicesToModelNames.keys(); + foreach(int key, mitomona_keys) { + qCDebug(modelformat) << " meshIndicesToModelNames key =" << key << " val =" << hfmModel.meshIndicesToModelNames[key]; + } + + qCDebug(modelformat) << "---------------- Materials ----------------"; + + foreach(HFMMaterial mat, hfmModel.materials) { + qCDebug(modelformat) << "\n"; + qCDebug(modelformat) << " mat.materialID =" << mat.materialID; + qCDebug(modelformat) << " diffuseColor =" << mat.diffuseColor; + qCDebug(modelformat) << " diffuseFactor =" << mat.diffuseFactor; + qCDebug(modelformat) << " specularColor =" << mat.specularColor; + qCDebug(modelformat) << " specularFactor =" << mat.specularFactor; + qCDebug(modelformat) << " emissiveColor =" << mat.emissiveColor; + qCDebug(modelformat) << " emissiveFactor =" << mat.emissiveFactor; + qCDebug(modelformat) << " shininess =" << mat.shininess; + qCDebug(modelformat) << " opacity =" << mat.opacity; + qCDebug(modelformat) << " metallic =" << mat.metallic; + qCDebug(modelformat) << " roughness =" << mat.roughness; + qCDebug(modelformat) << " emissiveIntensity =" << mat.emissiveIntensity; + qCDebug(modelformat) << " ambientFactor =" << mat.ambientFactor; + + qCDebug(modelformat) << " materialID =" << mat.materialID; + qCDebug(modelformat) << " name =" << mat.name; + qCDebug(modelformat) << " shadingModel =" << mat.shadingModel; + qCDebug(modelformat) << " _material =" << mat._material.get(); + + qCDebug(modelformat) << " normalTexture =" << mat.normalTexture.filename; + qCDebug(modelformat) << " albedoTexture =" << mat.albedoTexture.filename; + qCDebug(modelformat) << " opacityTexture =" << mat.opacityTexture.filename; + + qCDebug(modelformat) << " lightmapParams =" << mat.lightmapParams; + + qCDebug(modelformat) << " isPBSMaterial =" << mat.isPBSMaterial; + qCDebug(modelformat) << " useNormalMap =" << mat.useNormalMap; + qCDebug(modelformat) << " useAlbedoMap =" << mat.useAlbedoMap; + qCDebug(modelformat) << " useOpacityMap =" << mat.useOpacityMap; + qCDebug(modelformat) << " useRoughnessMap =" << mat.useRoughnessMap; + qCDebug(modelformat) << " useSpecularMap =" << mat.useSpecularMap; + qCDebug(modelformat) << " useMetallicMap =" << mat.useMetallicMap; + qCDebug(modelformat) << " useEmissiveMap =" << mat.useEmissiveMap; + qCDebug(modelformat) << " useOcclusionMap =" << mat.useOcclusionMap; + qCDebug(modelformat) << "\n"; + } + + qCDebug(modelformat) << "---------------- Joints ----------------"; + + foreach (HFMJoint joint, hfmModel.joints) { + qCDebug(modelformat) << "\n"; + qCDebug(modelformat) << " shapeInfo.avgPoint =" << joint.shapeInfo.avgPoint; + qCDebug(modelformat) << " shapeInfo.debugLines =" << joint.shapeInfo.debugLines; + qCDebug(modelformat) << " shapeInfo.dots =" << joint.shapeInfo.dots; + qCDebug(modelformat) << " shapeInfo.points =" << joint.shapeInfo.points; + + qCDebug(modelformat) << " parentIndex" << joint.parentIndex; + qCDebug(modelformat) << " distanceToParent" << joint.distanceToParent; + qCDebug(modelformat) << " translation" << joint.translation; + qCDebug(modelformat) << " preTransform" << joint.preTransform; + qCDebug(modelformat) << " preRotation" << joint.preRotation; + qCDebug(modelformat) << " rotation" << joint.rotation; + qCDebug(modelformat) << " postRotation" << joint.postRotation; + qCDebug(modelformat) << " postTransform" << joint.postTransform; + qCDebug(modelformat) << " transform" << joint.transform; + qCDebug(modelformat) << " rotationMin" << joint.rotationMin; + qCDebug(modelformat) << " rotationMax" << joint.rotationMax; + qCDebug(modelformat) << " inverseDefaultRotation" << joint.inverseDefaultRotation; + qCDebug(modelformat) << " inverseBindRotation" << joint.inverseBindRotation; + qCDebug(modelformat) << " bindTransform" << joint.bindTransform; + qCDebug(modelformat) << " name" << joint.name; + qCDebug(modelformat) << " isSkeletonJoint" << joint.isSkeletonJoint; + qCDebug(modelformat) << " bindTransformFoundInCluster" << joint.hasGeometricOffset; + qCDebug(modelformat) << " bindTransformFoundInCluster" << joint.geometricTranslation; + qCDebug(modelformat) << " bindTransformFoundInCluster" << joint.geometricRotation; + qCDebug(modelformat) << " bindTransformFoundInCluster" << joint.geometricScaling; + qCDebug(modelformat) << "\n"; + } qCDebug(modelformat) << "---------------- GLTF Model ----------------"; glTFDebugDump(); diff --git a/libraries/fbx/src/GLTFSerializer.h b/libraries/fbx/src/GLTFSerializer.h index d59df615e5..b1020f7154 100755 --- a/libraries/fbx/src/GLTFSerializer.h +++ b/libraries/fbx/src/GLTFSerializer.h @@ -38,15 +38,15 @@ struct GLTFAsset { struct GLTFNode { QString name; - int camera{ -1 }; - int mesh{ -1 }; + int camera; + int mesh; QVector children; QVector translation; QVector rotation; QVector scale; QVector matrix; - glm::mat4 transform; - int skin { -1 }; + QVector transforms; + int skin; QVector skeletons; QString jointName; QMap defined; @@ -85,8 +85,6 @@ struct GLTFNode { qCDebug(modelformat) << "skeletons: " << skeletons; } } - - void normalizeTransform(); }; // Meshes @@ -460,56 +458,15 @@ struct GLTFMaterial { // Accesors namespace GLTFAccessorType { - enum Value { - SCALAR = 1, - VEC2 = 2, - VEC3 = 3, - VEC4 = 4, - MAT2 = 5, - MAT3 = 9, - MAT4 = 16 + enum Values { + SCALAR = 0, + VEC2, + VEC3, + VEC4, + MAT2, + MAT3, + MAT4 }; - - inline int count(Value value) { - if (value == MAT2) { - return 4; - } - return (int)value; - } -} - -namespace GLTFVertexAttribute { - enum Value { - UNKNOWN = -1, - POSITION = 0, - NORMAL, - TANGENT, - TEXCOORD_0, - TEXCOORD_1, - COLOR_0, - JOINTS_0, - WEIGHTS_0, - }; - inline Value fromString(const QString& key) { - if (key == "POSITION") { - return POSITION; - } else if (key == "NORMAL") { - return NORMAL; - } else if (key == "TANGENT") { - return TANGENT; - } else if (key == "TEXCOORD_0") { - return TEXCOORD_0; - } else if (key == "TEXCOORD_1") { - return TEXCOORD_1; - } else if (key == "COLOR_0") { - return COLOR_0; - } else if (key == "JOINTS_0") { - return JOINTS_0; - } else if (key == "WEIGHTS_0") { - return WEIGHTS_0; - } - return UNKNOWN; - } } namespace GLTFAccessorComponentType { enum Values { @@ -801,13 +758,6 @@ struct GLTFFile { foreach(auto tex, textures) tex.dump(); } } - - - void populateMaterialNames(); - void sortNodes(); - void normalizeNodeTransforms(); -private: - void reorderNodes(const std::unordered_map& reorderMap); }; class GLTFSerializer : public QObject, public HFMSerializer { @@ -822,7 +772,7 @@ private: hifi::URL _url; hifi::ByteArray _glbBinary; - const glm::mat4& getModelTransform(const GLTFNode& node); + glm::mat4 getModelTransform(const GLTFNode& node); void getSkinInverseBindMatrices(std::vector>& inverseBindMatrixValues); void generateTargetData(int index, float weight, QVector& returnVector); @@ -891,9 +841,6 @@ private: template bool addArrayFromAccessor(GLTFAccessor& accessor, QVector& outarray); - template - bool addArrayFromAttribute(GLTFVertexAttribute::Value vertexAttribute, GLTFAccessor& accessor, QVector& outarray); - void retriangulate(const QVector& in_indices, const QVector& in_vertices, const QVector& in_normals, QVector& out_indices, QVector& out_vertices, QVector& out_normals); diff --git a/libraries/fbx/src/OBJSerializer.cpp b/libraries/fbx/src/OBJSerializer.cpp index 4da7351b42..416f343a47 100644 --- a/libraries/fbx/src/OBJSerializer.cpp +++ b/libraries/fbx/src/OBJSerializer.cpp @@ -174,6 +174,11 @@ glm::vec2 OBJTokenizer::getVec2() { return v; } + +void setMeshPartDefaults(HFMMeshPart& meshPart, QString materialID) { + meshPart.materialID = materialID; +} + // OBJFace // NOTE (trent, 7/20/17): The vertexColors vector being passed-in isn't necessary here, but I'm just // pairing it with the vertices vector for consistency. @@ -487,7 +492,8 @@ bool OBJSerializer::parseOBJGroup(OBJTokenizer& tokenizer, const hifi::VariantHa float& scaleGuess, bool combineParts) { FaceGroup faces; HFMMesh& mesh = hfmModel.meshes[0]; - mesh.parts.push_back(HFMMeshPart()); + mesh.parts.append(HFMMeshPart()); + HFMMeshPart& meshPart = mesh.parts.last(); bool sawG = false; bool result = true; int originalFaceCountForDebugging = 0; @@ -495,6 +501,8 @@ bool OBJSerializer::parseOBJGroup(OBJTokenizer& tokenizer, const hifi::VariantHa bool anyVertexColor { false }; int vertexCount { 0 }; + setMeshPartDefaults(meshPart, QString("dontknow") + QString::number(mesh.parts.count())); + while (true) { int tokenType = tokenizer.nextToken(); if (tokenType == OBJTokenizer::COMMENT_TOKEN) { @@ -667,19 +675,17 @@ HFMModel::Pointer OBJSerializer::read(const hifi::ByteArray& data, const hifi::V _url = url; bool combineParts = mapping.value("combineParts").toBool(); - hfmModel.meshes.push_back(HFMMesh()); + hfmModel.meshExtents.reset(); + hfmModel.meshes.append(HFMMesh()); - std::vector materialNamePerShape; try { // call parseOBJGroup as long as it's returning true. Each successful call will // add a new meshPart to the model's single mesh. while (parseOBJGroup(tokenizer, mapping, hfmModel, scaleGuess, combineParts)) {} - uint32_t meshIndex = 0; - HFMMesh& mesh = hfmModel.meshes[meshIndex]; - mesh.meshIndex = meshIndex; + HFMMesh& mesh = hfmModel.meshes[0]; + mesh.meshIndex = 0; - uint32_t jointIndex = 0; hfmModel.joints.resize(1); hfmModel.joints[0].parentIndex = -1; hfmModel.joints[0].distanceToParent = 0; @@ -691,11 +697,19 @@ HFMModel::Pointer OBJSerializer::read(const hifi::ByteArray& data, const hifi::V hfmModel.jointIndices["x"] = 1; + HFMCluster cluster; + cluster.jointIndex = 0; + cluster.inverseBindMatrix = glm::mat4(1, 0, 0, 0, + 0, 1, 0, 0, + 0, 0, 1, 0, + 0, 0, 0, 1); + mesh.clusters.append(cluster); + QMap materialMeshIdMap; - std::vector hfmMeshParts; - for (uint32_t meshPartIndex = 0; meshPartIndex < (uint32_t)mesh.parts.size(); ++meshPartIndex) { - HFMMeshPart& meshPart = mesh.parts[meshPartIndex]; - FaceGroup faceGroup = faceGroups[meshPartIndex]; + QVector hfmMeshParts; + for (int i = 0, meshPartCount = 0; i < mesh.parts.count(); i++, meshPartCount++) { + HFMMeshPart& meshPart = mesh.parts[i]; + FaceGroup faceGroup = faceGroups[meshPartCount]; bool specifiesUV = false; foreach(OBJFace face, faceGroup) { // Go through all of the OBJ faces and determine the number of different materials necessary (each different material will be a unique mesh). @@ -704,13 +718,12 @@ HFMModel::Pointer OBJSerializer::read(const hifi::ByteArray& data, const hifi::V // Create a new HFMMesh for this material mapping. materialMeshIdMap.insert(face.materialName, materialMeshIdMap.count()); - uint32_t partIndex = (int)hfmMeshParts.size(); - hfmMeshParts.push_back(HFMMeshPart()); - HFMMeshPart& meshPartNew = hfmMeshParts.back(); + hfmMeshParts.append(HFMMeshPart()); + HFMMeshPart& meshPartNew = hfmMeshParts.last(); meshPartNew.quadIndices = QVector(meshPart.quadIndices); // Copy over quad indices [NOTE (trent/mittens, 4/3/17): Likely unnecessary since they go unused anyway]. meshPartNew.quadTrianglesIndices = QVector(meshPart.quadTrianglesIndices); // Copy over quad triangulated indices [NOTE (trent/mittens, 4/3/17): Likely unnecessary since they go unused anyway]. meshPartNew.triangleIndices = QVector(meshPart.triangleIndices); // Copy over triangle indices. - + // Do some of the material logic (which previously lived below) now. // All the faces in the same group will have the same name and material. QString groupMaterialName = face.materialName; @@ -732,26 +745,19 @@ HFMModel::Pointer OBJSerializer::read(const hifi::ByteArray& data, const hifi::V needsMaterialLibrary = groupMaterialName != SMART_DEFAULT_MATERIAL_NAME; } materials[groupMaterialName] = material; + meshPartNew.materialID = groupMaterialName; } - materialNamePerShape.push_back(groupMaterialName); - - - hfm::Shape shape; - shape.mesh = meshIndex; - shape.joint = jointIndex; - shape.meshPart = partIndex; - hfmModel.shapes.push_back(shape); } } } // clean up old mesh parts. - auto unmodifiedMeshPartCount = (uint32_t)mesh.parts.size(); + int unmodifiedMeshPartCount = mesh.parts.count(); mesh.parts.clear(); - mesh.parts = hfmMeshParts; + mesh.parts = QVector(hfmMeshParts); - for (uint32_t meshPartIndex = 0; meshPartIndex < unmodifiedMeshPartCount; meshPartIndex++) { - FaceGroup faceGroup = faceGroups[meshPartIndex]; + for (int i = 0, meshPartCount = 0; i < unmodifiedMeshPartCount; i++, meshPartCount++) { + FaceGroup faceGroup = faceGroups[meshPartCount]; // Now that each mesh has been created with its own unique material mappings, fill them with data (vertex data is duplicated, face data is not). foreach(OBJFace face, faceGroup) { @@ -817,13 +823,18 @@ HFMModel::Pointer OBJSerializer::read(const hifi::ByteArray& data, const hifi::V } } } + + mesh.meshExtents.reset(); + foreach(const glm::vec3& vertex, mesh.vertices) { + mesh.meshExtents.addPoint(vertex); + hfmModel.meshExtents.addPoint(vertex); + } + + // hfmDebugDump(hfmModel); } catch(const std::exception& e) { qCDebug(modelformat) << "OBJSerializer fail: " << e.what(); } - // At this point, the hfmModel joint, mesh, parts and shpaes have been defined - // only no material assigned - QString queryPart = _url.query(); bool suppressMaterialsHack = queryPart.contains("hifiusemat"); // If this appears in query string, don't fetch mtl even if used. OBJMaterial& preDefinedMaterial = materials[SMART_DEFAULT_MATERIAL_NAME]; @@ -875,23 +886,17 @@ HFMModel::Pointer OBJSerializer::read(const hifi::ByteArray& data, const hifi::V } } - // As we are populating the material list in the hfmModel, let s also create the reverse map (from materialName to index) - QMap materialNameToIndex; foreach (QString materialID, materials.keys()) { OBJMaterial& objMaterial = materials[materialID]; if (!objMaterial.used) { continue; } - // capture the name to index map - materialNameToIndex[materialID] = (uint32_t) hfmModel.materials.size(); - - hfmModel.materials.emplace_back(objMaterial.diffuseColor, - objMaterial.specularColor, - objMaterial.emissiveColor, - objMaterial.shininess, - objMaterial.opacity); - HFMMaterial& hfmMaterial = hfmModel.materials.back(); + HFMMaterial& hfmMaterial = hfmModel.materials[materialID] = HFMMaterial(objMaterial.diffuseColor, + objMaterial.specularColor, + objMaterial.emissiveColor, + objMaterial.shininess, + objMaterial.opacity); hfmMaterial.name = materialID; hfmMaterial.materialID = materialID; @@ -991,16 +996,77 @@ HFMModel::Pointer OBJSerializer::read(const hifi::ByteArray& data, const hifi::V modelMaterial->setOpacity(hfmMaterial.opacity); } - // GO over the shapes once more to assign the material index correctly - for (uint32_t i = 0; i < (uint32_t)hfmModel.shapes.size(); ++i) { - const auto& materialName = materialNamePerShape[i]; - if (!materialName.isEmpty()) { - auto foundMaterialIndex = materialNameToIndex.find(materialName); - if (foundMaterialIndex != materialNameToIndex.end()) { - hfmModel.shapes[i].material = foundMaterialIndex.value(); + return hfmModelPtr; +} + +void hfmDebugDump(const HFMModel& hfmModel) { + qCDebug(modelformat) << "---------------- hfmModel ----------------"; + qCDebug(modelformat) << " hasSkeletonJoints =" << hfmModel.hasSkeletonJoints; + qCDebug(modelformat) << " offset =" << hfmModel.offset; + qCDebug(modelformat) << " meshes.count() =" << hfmModel.meshes.count(); + foreach (HFMMesh mesh, hfmModel.meshes) { + qCDebug(modelformat) << " vertices.count() =" << mesh.vertices.count(); + qCDebug(modelformat) << " colors.count() =" << mesh.colors.count(); + qCDebug(modelformat) << " normals.count() =" << mesh.normals.count(); + /*if (mesh.normals.count() == mesh.vertices.count()) { + for (int i = 0; i < mesh.normals.count(); i++) { + qCDebug(modelformat) << " " << mesh.vertices[ i ] << mesh.normals[ i ]; } + }*/ + qCDebug(modelformat) << " tangents.count() =" << mesh.tangents.count(); + qCDebug(modelformat) << " colors.count() =" << mesh.colors.count(); + qCDebug(modelformat) << " texCoords.count() =" << mesh.texCoords.count(); + qCDebug(modelformat) << " texCoords1.count() =" << mesh.texCoords1.count(); + qCDebug(modelformat) << " clusterIndices.count() =" << mesh.clusterIndices.count(); + qCDebug(modelformat) << " clusterWeights.count() =" << mesh.clusterWeights.count(); + qCDebug(modelformat) << " meshExtents =" << mesh.meshExtents; + qCDebug(modelformat) << " modelTransform =" << mesh.modelTransform; + qCDebug(modelformat) << " parts.count() =" << mesh.parts.count(); + foreach (HFMMeshPart meshPart, mesh.parts) { + qCDebug(modelformat) << " quadIndices.count() =" << meshPart.quadIndices.count(); + qCDebug(modelformat) << " triangleIndices.count() =" << meshPart.triangleIndices.count(); + /* + qCDebug(modelformat) << " diffuseColor =" << meshPart.diffuseColor << "mat =" << meshPart._material->getDiffuse(); + qCDebug(modelformat) << " specularColor =" << meshPart.specularColor << "mat =" << meshPart._material->getMetallic(); + qCDebug(modelformat) << " emissiveColor =" << meshPart.emissiveColor << "mat =" << meshPart._material->getEmissive(); + qCDebug(modelformat) << " emissiveParams =" << meshPart.emissiveParams; + qCDebug(modelformat) << " gloss =" << meshPart.shininess << "mat =" << meshPart._material->getRoughness(); + qCDebug(modelformat) << " opacity =" << meshPart.opacity << "mat =" << meshPart._material->getOpacity(); + */ + qCDebug(modelformat) << " materialID =" << meshPart.materialID; + /* qCDebug(modelformat) << " diffuse texture =" << meshPart.diffuseTexture.filename; + qCDebug(modelformat) << " specular texture =" << meshPart.specularTexture.filename; + */ + } + qCDebug(modelformat) << " clusters.count() =" << mesh.clusters.count(); + foreach (HFMCluster cluster, mesh.clusters) { + qCDebug(modelformat) << " jointIndex =" << cluster.jointIndex; + qCDebug(modelformat) << " inverseBindMatrix =" << cluster.inverseBindMatrix; } } - return hfmModelPtr; + qCDebug(modelformat) << " jointIndices =" << hfmModel.jointIndices; + qCDebug(modelformat) << " joints.count() =" << hfmModel.joints.count(); + + foreach (HFMJoint joint, hfmModel.joints) { + + qCDebug(modelformat) << " parentIndex" << joint.parentIndex; + qCDebug(modelformat) << " distanceToParent" << joint.distanceToParent; + qCDebug(modelformat) << " translation" << joint.translation; + qCDebug(modelformat) << " preTransform" << joint.preTransform; + qCDebug(modelformat) << " preRotation" << joint.preRotation; + qCDebug(modelformat) << " rotation" << joint.rotation; + qCDebug(modelformat) << " postRotation" << joint.postRotation; + qCDebug(modelformat) << " postTransform" << joint.postTransform; + qCDebug(modelformat) << " transform" << joint.transform; + qCDebug(modelformat) << " rotationMin" << joint.rotationMin; + qCDebug(modelformat) << " rotationMax" << joint.rotationMax; + qCDebug(modelformat) << " inverseDefaultRotation" << joint.inverseDefaultRotation; + qCDebug(modelformat) << " inverseBindRotation" << joint.inverseBindRotation; + qCDebug(modelformat) << " bindTransform" << joint.bindTransform; + qCDebug(modelformat) << " name" << joint.name; + qCDebug(modelformat) << " isSkeletonJoint" << joint.isSkeletonJoint; + } + + qCDebug(modelformat) << "\n"; } diff --git a/libraries/fbx/src/OBJSerializer.h b/libraries/fbx/src/OBJSerializer.h index 462d32a119..6fdd95e2c3 100644 --- a/libraries/fbx/src/OBJSerializer.h +++ b/libraries/fbx/src/OBJSerializer.h @@ -120,5 +120,6 @@ private: // What are these utilities doing here? One is used by fbx loading code in VHACD Utils, and the other a general debugging utility. void setMeshPartDefaults(HFMMeshPart& meshPart, QString materialID); +void hfmDebugDump(const HFMModel& hfmModel); #endif // hifi_OBJSerializer_h diff --git a/libraries/hfm/src/hfm/HFM.cpp b/libraries/hfm/src/hfm/HFM.cpp index 500aaaa842..236445bfda 100644 --- a/libraries/hfm/src/hfm/HFM.cpp +++ b/libraries/hfm/src/hfm/HFM.cpp @@ -76,7 +76,7 @@ QStringList HFMModel::getJointNames() const { } bool HFMModel::hasBlendedMeshes() const { - if (!meshes.empty()) { + if (!meshes.isEmpty()) { foreach (const HFMMesh& mesh, meshes) { if (!mesh.blendshapes.isEmpty()) { return true; @@ -166,16 +166,16 @@ void HFMModel::computeKdops() { glm::vec3(INV_SQRT_3, INV_SQRT_3, -INV_SQRT_3), glm::vec3(INV_SQRT_3, -INV_SQRT_3, -INV_SQRT_3) }; - if (joints.size() != shapeVertices.size()) { + if (joints.size() != (int)shapeVertices.size()) { return; } // now that all joints have been scanned compute a k-Dop bounding volume of mesh - for (size_t i = 0; i < joints.size(); ++i) { + for (int i = 0; i < joints.size(); ++i) { HFMJoint& joint = joints[i]; // NOTE: points are in joint-frame ShapeVertices& points = shapeVertices.at(i); - glm::quat rotOffset = jointRotationOffsets.contains((int)i) ? glm::inverse(jointRotationOffsets[(int)i]) : quat(); + glm::quat rotOffset = jointRotationOffsets.contains(i) ? glm::inverse(jointRotationOffsets[i]) : quat(); if (points.size() > 0) { // compute average point glm::vec3 avgPoint = glm::vec3(0.0f); @@ -208,164 +208,3 @@ void HFMModel::computeKdops() { } } } - -void hfm::Model::debugDump() const { - qCDebug(modelformat) << "---------------- hfmModel ----------------"; - qCDebug(modelformat) << " hasSkeletonJoints =" << hasSkeletonJoints; - qCDebug(modelformat) << " offset =" << offset; - - qCDebug(modelformat) << " neckPivot = " << neckPivot; - - qCDebug(modelformat) << " bindExtents.size() = " << bindExtents.size(); - qCDebug(modelformat) << " meshExtents.size() = " << meshExtents.size(); - - qCDebug(modelformat) << "---------------- Shapes ----------------"; - qCDebug(modelformat) << " shapes.size() =" << shapes.size(); - for (const hfm::Shape& shape : shapes) { - qCDebug(modelformat) << "\n"; - qCDebug(modelformat) << " mesh =" << shape.mesh; - qCDebug(modelformat) << " meshPart =" << shape.meshPart; - qCDebug(modelformat) << " material =" << shape.material; - qCDebug(modelformat) << " joint =" << shape.joint; - qCDebug(modelformat) << " transformedExtents =" << shape.transformedExtents; - qCDebug(modelformat) << " skinDeformer =" << shape.skinDeformer; - } - - qCDebug(modelformat) << " jointIndices.size() =" << jointIndices.size(); - qCDebug(modelformat) << " joints.size() =" << joints.size(); - qCDebug(modelformat) << "---------------- Meshes ----------------"; - qCDebug(modelformat) << " meshes.size() =" << meshes.size(); - qCDebug(modelformat) << " blendshapeChannelNames = " << blendshapeChannelNames; - for (const HFMMesh& mesh : meshes) { - qCDebug(modelformat) << "\n"; - qCDebug(modelformat) << " meshpointer =" << mesh._mesh.get(); - qCDebug(modelformat) << " meshindex =" << mesh.meshIndex; - qCDebug(modelformat) << " vertices.size() =" << mesh.vertices.size(); - qCDebug(modelformat) << " colors.size() =" << mesh.colors.size(); - qCDebug(modelformat) << " normals.size() =" << mesh.normals.size(); - qCDebug(modelformat) << " tangents.size() =" << mesh.tangents.size(); - qCDebug(modelformat) << " colors.size() =" << mesh.colors.size(); - qCDebug(modelformat) << " texCoords.size() =" << mesh.texCoords.size(); - qCDebug(modelformat) << " texCoords1.size() =" << mesh.texCoords1.size(); - qCDebug(modelformat) << " clusterIndices.size() =" << mesh.clusterIndices.size(); - qCDebug(modelformat) << " clusterWeights.size() =" << mesh.clusterWeights.size(); - qCDebug(modelformat) << " modelTransform =" << mesh.modelTransform; - qCDebug(modelformat) << " parts.size() =" << mesh.parts.size(); - qCDebug(modelformat) << "---------------- Meshes (blendshapes)--------"; - for (HFMBlendshape bshape : mesh.blendshapes) { - qCDebug(modelformat) << "\n"; - qCDebug(modelformat) << " bshape.indices.size() =" << bshape.indices.size(); - qCDebug(modelformat) << " bshape.vertices.size() =" << bshape.vertices.size(); - qCDebug(modelformat) << " bshape.normals.size() =" << bshape.normals.size(); - qCDebug(modelformat) << "\n"; - } - qCDebug(modelformat) << "---------------- Meshes (meshparts)--------"; - for (HFMMeshPart meshPart : mesh.parts) { - qCDebug(modelformat) << "\n"; - qCDebug(modelformat) << " quadIndices.size() =" << meshPart.quadIndices.size(); - qCDebug(modelformat) << " triangleIndices.size() =" << meshPart.triangleIndices.size(); - qCDebug(modelformat) << "\n"; - } - } - qCDebug(modelformat) << "---------------- AnimationFrames ----------------"; - for (HFMAnimationFrame anim : animationFrames) { - qCDebug(modelformat) << " anim.translations = " << anim.translations; - qCDebug(modelformat) << " anim.rotations = " << anim.rotations; - } - QList mitomona_keys = meshIndicesToModelNames.keys(); - for (int key : mitomona_keys) { - qCDebug(modelformat) << " meshIndicesToModelNames key =" << key - << " val =" << meshIndicesToModelNames[key]; - } - - qCDebug(modelformat) << "---------------- Materials ----------------"; - - for (HFMMaterial mat : materials) { - qCDebug(modelformat) << "\n"; - qCDebug(modelformat) << " mat.materialID =" << mat.materialID; - qCDebug(modelformat) << " diffuseColor =" << mat.diffuseColor; - qCDebug(modelformat) << " diffuseFactor =" << mat.diffuseFactor; - qCDebug(modelformat) << " specularColor =" << mat.specularColor; - qCDebug(modelformat) << " specularFactor =" << mat.specularFactor; - qCDebug(modelformat) << " emissiveColor =" << mat.emissiveColor; - qCDebug(modelformat) << " emissiveFactor =" << mat.emissiveFactor; - qCDebug(modelformat) << " shininess =" << mat.shininess; - qCDebug(modelformat) << " opacity =" << mat.opacity; - qCDebug(modelformat) << " metallic =" << mat.metallic; - qCDebug(modelformat) << " roughness =" << mat.roughness; - qCDebug(modelformat) << " emissiveIntensity =" << mat.emissiveIntensity; - qCDebug(modelformat) << " ambientFactor =" << mat.ambientFactor; - - qCDebug(modelformat) << " materialID =" << mat.materialID; - qCDebug(modelformat) << " name =" << mat.name; - qCDebug(modelformat) << " shadingModel =" << mat.shadingModel; - qCDebug(modelformat) << " _material =" << mat._material.get(); - - qCDebug(modelformat) << " normalTexture =" << mat.normalTexture.filename; - qCDebug(modelformat) << " albedoTexture =" << mat.albedoTexture.filename; - qCDebug(modelformat) << " opacityTexture =" << mat.opacityTexture.filename; - - qCDebug(modelformat) << " lightmapParams =" << mat.lightmapParams; - - qCDebug(modelformat) << " isPBSMaterial =" << mat.isPBSMaterial; - qCDebug(modelformat) << " useNormalMap =" << mat.useNormalMap; - qCDebug(modelformat) << " useAlbedoMap =" << mat.useAlbedoMap; - qCDebug(modelformat) << " useOpacityMap =" << mat.useOpacityMap; - qCDebug(modelformat) << " useRoughnessMap =" << mat.useRoughnessMap; - qCDebug(modelformat) << " useSpecularMap =" << mat.useSpecularMap; - qCDebug(modelformat) << " useMetallicMap =" << mat.useMetallicMap; - qCDebug(modelformat) << " useEmissiveMap =" << mat.useEmissiveMap; - qCDebug(modelformat) << " useOcclusionMap =" << mat.useOcclusionMap; - qCDebug(modelformat) << "\n"; - } - - qCDebug(modelformat) << "---------------- Joints ----------------"; - - for (const HFMJoint& joint : joints) { - qCDebug(modelformat) << "\n"; - qCDebug(modelformat) << " shapeInfo.avgPoint =" << joint.shapeInfo.avgPoint; - qCDebug(modelformat) << " shapeInfo.debugLines =" << joint.shapeInfo.debugLines; - qCDebug(modelformat) << " shapeInfo.dots =" << joint.shapeInfo.dots; - qCDebug(modelformat) << " shapeInfo.points =" << joint.shapeInfo.points; - - qCDebug(modelformat) << " ---"; - - qCDebug(modelformat) << " parentIndex" << joint.parentIndex; - qCDebug(modelformat) << " distanceToParent" << joint.distanceToParent; - qCDebug(modelformat) << " localTransform" << joint.localTransform; - qCDebug(modelformat) << " transform" << joint.transform; - qCDebug(modelformat) << " globalTransform" << joint.globalTransform; - - qCDebug(modelformat) << " ---"; - - qCDebug(modelformat) << " translation" << joint.translation; - qCDebug(modelformat) << " preTransform" << joint.preTransform; - qCDebug(modelformat) << " preRotation" << joint.preRotation; - qCDebug(modelformat) << " rotation" << joint.rotation; - qCDebug(modelformat) << " postRotation" << joint.postRotation; - qCDebug(modelformat) << " postTransform" << joint.postTransform; - qCDebug(modelformat) << " rotationMin" << joint.rotationMin; - qCDebug(modelformat) << " rotationMax" << joint.rotationMax; - qCDebug(modelformat) << " inverseDefaultRotation" << joint.inverseDefaultRotation; - qCDebug(modelformat) << " inverseBindRotation" << joint.inverseBindRotation; - qCDebug(modelformat) << " bindTransformFoundInCluster" << joint.bindTransformFoundInCluster; - qCDebug(modelformat) << " bindTransform" << joint.bindTransform; - qCDebug(modelformat) << " name" << joint.name; - qCDebug(modelformat) << " isSkeletonJoint" << joint.isSkeletonJoint; - qCDebug(modelformat) << " geometricOffset" << joint.geometricOffset; - qCDebug(modelformat) << "\n"; - } - - qCDebug(modelformat) << "------------- SkinDeformers ------------"; - qCDebug(modelformat) << " skinDeformers.size() =" << skinDeformers.size(); - for(const hfm::SkinDeformer& skinDeformer : skinDeformers) { - qCDebug(modelformat) << "------- SkinDeformers (Clusters) -------"; - for (const hfm::Cluster& cluster : skinDeformer.clusters) { - qCDebug(modelformat) << "\n"; - qCDebug(modelformat) << " jointIndex =" << cluster.jointIndex; - qCDebug(modelformat) << " inverseBindMatrix =" << cluster.inverseBindMatrix; - qCDebug(modelformat) << "\n"; - } - } - qCDebug(modelformat) << "\n"; -} diff --git a/libraries/hfm/src/hfm/HFM.h b/libraries/hfm/src/hfm/HFM.h index ca73676f86..7111ad2e65 100644 --- a/libraries/hfm/src/hfm/HFM.h +++ b/libraries/hfm/src/hfm/HFM.h @@ -66,8 +66,6 @@ static const int DRACO_ATTRIBUTE_ORIGINAL_INDEX = DRACO_BEGIN_CUSTOM_HIFI_ATTRIB // High Fidelity Model namespace namespace hfm { -static const uint32_t UNDEFINED_KEY = (uint32_t)-1; - /// A single blendshape. class Blendshape { public: @@ -113,22 +111,19 @@ public: bool isSkeletonJoint; bool bindTransformFoundInCluster; - // geometric offset is applied in local space but does NOT affect children. - // TODO: Apply hfm::Joint.geometricOffset to transforms in the model preparation step - glm::mat4 geometricOffset; - - // globalTransform is the transform of the joint with all parent transforms applied, plus the geometric offset - glm::mat4 localTransform; - glm::mat4 globalTransform; + bool hasGeometricOffset; + glm::vec3 geometricTranslation; + glm::quat geometricRotation; + glm::vec3 geometricScaling; }; /// A single binding to a joint. class Cluster { public: - static const uint32_t INVALID_JOINT_INDEX { (uint32_t)-1 }; - uint32_t jointIndex { INVALID_JOINT_INDEX }; + + int jointIndex; glm::mat4 inverseBindMatrix; Transform inverseBindTransform; }; @@ -160,6 +155,8 @@ public: QVector quadIndices; // original indices from the FBX mesh QVector quadTrianglesIndices; // original indices from the FBX mesh of the quad converted as triangles QVector triangleIndices; // original indices from the FBX mesh + + QString materialID; }; class Material { @@ -230,20 +227,11 @@ public: bool needTangentSpace() const; }; - -/// Simple Triangle List Mesh -struct TriangleListMesh { - std::vector vertices; - std::vector indices; - std::vector parts; // Offset in the indices, Number of indices - std::vector partExtents; // Extents of each part with no transform applied. Same length as parts. -}; - /// A single mesh (with optional blendshapes). class Mesh { public: - std::vector parts; + QVector parts; QVector vertices; QVector normals; @@ -251,27 +239,21 @@ public: QVector colors; QVector texCoords; QVector texCoords1; + QVector clusterIndices; + QVector clusterWeights; + QVector originalIndices; - Extents meshExtents; // DEPRECATED (see hfm::Shape::transformedExtents) - glm::mat4 modelTransform; // DEPRECATED (see hfm::Joint::globalTransform, hfm::Shape::transform, hfm::Model::joints) + QVector clusters; - // Skinning cluster attributes - std::vector clusterIndices; - std::vector clusterWeights; - uint16_t clusterWeightsPerVertex { 0 }; + Extents meshExtents; + glm::mat4 modelTransform; - // Blendshape attributes QVector blendshapes; - // Simple Triangle List Mesh generated during baking - hfm::TriangleListMesh triangleListMesh; - - QVector originalIndices; // Original indices of the vertices unsigned int meshIndex; // the order the meshes appeared in the object file graphics::MeshPointer _mesh; bool wasCompressed { false }; - }; /// A single animation frame. @@ -308,30 +290,6 @@ public: bool shouldInitCollisions() const { return _collisionsConfig.size() > 0; } }; -// A different skinning representation, used by FBXSerializer. We convert this to our graphics-optimized runtime representation contained within the mesh. -class SkinCluster { -public: - std::vector indices; - std::vector weights; -}; - -class SkinDeformer { -public: - std::vector clusters; -}; - -// The lightweight model part description. -class Shape { -public: - uint32_t mesh { UNDEFINED_KEY }; - uint32_t meshPart { UNDEFINED_KEY }; - uint32_t material { UNDEFINED_KEY }; - uint32_t joint { UNDEFINED_KEY }; // The hfm::Joint associated with this shape, containing transform information - // TODO: Have all serializers calculate hfm::Shape::transformedExtents in world space where they previously calculated hfm::Mesh::meshExtents. Change all code that uses hfm::Mesh::meshExtents to use this instead. - Extents transformedExtents; // The precise extents of the meshPart vertices in world space, after transform information is applied, while not taking into account rigging/skinning - uint32_t skinDeformer { UNDEFINED_KEY }; -}; - /// The runtime model format. class Model { public: @@ -342,18 +300,15 @@ public: QString author; QString applicationName; ///< the name of the application that generated the model - std::vector shapes; - - std::vector meshes; - std::vector materials; - - std::vector skinDeformers; - - std::vector joints; + QVector joints; QHash jointIndices; ///< 1-based, so as to more easily detect missing indices bool hasSkeletonJoints; + + QVector meshes; QVector scripts; + QHash materials; + glm::mat4 offset; // This includes offset, rotation, and scale as specified by the FST file glm::vec3 neckPivot; @@ -385,12 +340,19 @@ public: QMap jointRotationOffsets; std::vector shapeVertices; FlowData flowData; - - void debugDump() const; }; }; +class ExtractedMesh { +public: + hfm::Mesh mesh; + QMultiHash newIndices; + QVector > blendshapeIndexMaps; + QVector > partMaterialTextures; + QHash texcoordSetMap; +}; + typedef hfm::Blendshape HFMBlendshape; typedef hfm::JointShapeInfo HFMJointShapeInfo; typedef hfm::Joint HFMJoint; @@ -399,10 +361,8 @@ typedef hfm::Texture HFMTexture; typedef hfm::MeshPart HFMMeshPart; typedef hfm::Material HFMMaterial; typedef hfm::Mesh HFMMesh; -typedef hfm::SkinDeformer HFMSkinDeformer; typedef hfm::AnimationFrame HFMAnimationFrame; typedef hfm::Light HFMLight; -typedef hfm::Shape HFMShape; typedef hfm::Model HFMModel; typedef hfm::FlowData FlowData; diff --git a/libraries/hfm/src/hfm/HFMModelMath.cpp b/libraries/hfm/src/hfm/HFMModelMath.cpp deleted file mode 100644 index 436e520643..0000000000 --- a/libraries/hfm/src/hfm/HFMModelMath.cpp +++ /dev/null @@ -1,212 +0,0 @@ -// -// HFMModelMath.cpp -// model-baker/src/model-baker -// -// Created by Sabrina Shanman on 2019/10/04. -// Copyright 2019 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 "HFMModelMath.h" - -#include - -#include - -#include -#include - -namespace hfm { - -void forEachIndex(const hfm::MeshPart& meshPart, std::function func) { - for (int i = 0; i <= meshPart.quadIndices.size() - 4; i += 4) { - func((uint32_t)meshPart.quadIndices[i]); - func((uint32_t)meshPart.quadIndices[i+1]); - func((uint32_t)meshPart.quadIndices[i+2]); - func((uint32_t)meshPart.quadIndices[i+3]); - } - for (int i = 0; i <= meshPart.triangleIndices.size() - 3; i += 3) { - func((uint32_t)meshPart.triangleIndices[i]); - func((uint32_t)meshPart.triangleIndices[i+1]); - func((uint32_t)meshPart.triangleIndices[i+2]); - } -} - -void thickenFlatExtents(Extents& extents) { - // Add epsilon to extents to compensate for flat plane - extents.minimum -= glm::vec3(EPSILON, EPSILON, EPSILON); - extents.maximum += glm::vec3(EPSILON, EPSILON, EPSILON); -} - -void calculateExtentsForTriangleListMesh(TriangleListMesh& triangleListMesh) { - triangleListMesh.partExtents.resize(triangleListMesh.parts.size()); - for (size_t partIndex = 0; partIndex < triangleListMesh.parts.size(); ++partIndex) { - const auto& part = triangleListMesh.parts[partIndex]; - auto& extents = triangleListMesh.partExtents[partIndex]; - int partEnd = part.x + part.y; - for (int i = part.x; i < partEnd; ++i) { - auto index = triangleListMesh.indices[i]; - const auto& position = triangleListMesh.vertices[index]; - extents.addPoint(position); - } - } -} - -void calculateExtentsForShape(hfm::Shape& shape, const std::vector& triangleListMeshes, const std::vector& joints) { - auto& shapeExtents = shape.transformedExtents; - shapeExtents.reset(); - - const auto& triangleListMesh = triangleListMeshes[shape.mesh]; - const auto& partExtent = triangleListMesh.partExtents[shape.meshPart]; - - const glm::mat4& transform = joints[shape.joint].transform; - shapeExtents = partExtent; - shapeExtents.transform(transform); - - thickenFlatExtents(shapeExtents); -} - -void calculateExtentsForModel(Extents& modelExtents, const std::vector& shapes) { - modelExtents.reset(); - - for (size_t i = 0; i < shapes.size(); ++i) { - const auto& shape = shapes[i]; - const auto& shapeExtents = shape.transformedExtents; - modelExtents.addExtents(shapeExtents); - } -} - -ReweightedDeformers getReweightedDeformers(const size_t numMeshVertices, const std::vector skinClusters, const uint16_t weightsPerVertex) { - ReweightedDeformers reweightedDeformers; - if (skinClusters.size() == 0) { - return reweightedDeformers; - } - - size_t numClusterIndices = numMeshVertices * weightsPerVertex; - reweightedDeformers.indices.resize(numClusterIndices, (uint16_t)(skinClusters.size() - 1)); - reweightedDeformers.weights.resize(numClusterIndices, 0); - reweightedDeformers.weightsPerVertex = weightsPerVertex; - - std::vector weightAccumulators; - weightAccumulators.resize(numClusterIndices, 0.0f); - for (uint16_t i = 0; i < (uint16_t)skinClusters.size(); ++i) { - const hfm::SkinCluster& skinCluster = skinClusters[i]; - - if (skinCluster.indices.size() != skinCluster.weights.size()) { - reweightedDeformers.trimmedToMatch = true; - } - size_t numIndicesOrWeights = std::min(skinCluster.indices.size(), skinCluster.weights.size()); - for (size_t j = 0; j < numIndicesOrWeights; ++j) { - uint32_t index = skinCluster.indices[j]; - float weight = skinCluster.weights[j]; - - // look for an unused slot in the weights vector - uint32_t weightIndex = index * weightsPerVertex; - uint32_t lowestIndex = -1; - float lowestWeight = FLT_MAX; - uint16_t k = 0; - for (; k < weightsPerVertex; k++) { - if (weightAccumulators[weightIndex + k] == 0.0f) { - reweightedDeformers.indices[weightIndex + k] = i; - weightAccumulators[weightIndex + k] = weight; - break; - } - if (weightAccumulators[weightIndex + k] < lowestWeight) { - lowestIndex = k; - lowestWeight = weightAccumulators[weightIndex + k]; - } - } - if (k == weightsPerVertex && weight > lowestWeight) { - // no space for an additional weight; we must replace the lowest - weightAccumulators[weightIndex + lowestIndex] = weight; - reweightedDeformers.indices[weightIndex + lowestIndex] = i; - } - } - } - - // now that we've accumulated the most relevant weights for each vertex - // normalize and compress to 16-bits - for (size_t i = 0; i < numMeshVertices; ++i) { - size_t j = i * weightsPerVertex; - - // normalize weights into uint16_t - float totalWeight = 0.0f; - for (size_t k = j; k < j + weightsPerVertex; ++k) { - totalWeight += weightAccumulators[k]; - } - - const float ALMOST_HALF = 0.499f; - if (totalWeight > 0.0f) { - float weightScalingFactor = (float)(UINT16_MAX) / totalWeight; - for (size_t k = j; k < j + weightsPerVertex; ++k) { - reweightedDeformers.weights[k] = (uint16_t)(weightScalingFactor * weightAccumulators[k] + ALMOST_HALF); - } - } else { - reweightedDeformers.weights[j] = (uint16_t)((float)(UINT16_MAX) + ALMOST_HALF); - } - } - - return reweightedDeformers; -} - -const TriangleListMesh generateTriangleListMesh(const std::vector& srcVertices, const std::vector& srcParts) { - - TriangleListMesh dest; - - // copy vertices for now - dest.vertices = srcVertices; - - std::vector oldToNewIndex(srcVertices.size()); - { - std::unordered_map uniqueVertexToNewIndex; - int oldIndex = 0; - int newIndex = 0; - for (const auto& srcVertex : srcVertices) { - auto foundIndex = uniqueVertexToNewIndex.find(srcVertex); - if (foundIndex != uniqueVertexToNewIndex.end()) { - oldToNewIndex[oldIndex] = foundIndex->second; - } else { - uniqueVertexToNewIndex[srcVertex] = newIndex; - oldToNewIndex[oldIndex] = newIndex; - dest.vertices[newIndex] = srcVertex; - ++newIndex; - } - ++oldIndex; - } - if (uniqueVertexToNewIndex.size() < srcVertices.size()) { - dest.vertices.resize(uniqueVertexToNewIndex.size()); - dest.vertices.shrink_to_fit(); - } - } - - auto newIndicesCount = 0; - for (const auto& part : srcParts) { - newIndicesCount += part.triangleIndices.size() + part.quadTrianglesIndices.size(); - } - - { - dest.indices.resize(newIndicesCount); - int i = 0; - for (const auto& part : srcParts) { - glm::ivec2 spart(i, 0); - for (const auto& qti : part.quadTrianglesIndices) { - dest.indices[i] = oldToNewIndex[qti]; - ++i; - } - for (const auto& ti : part.triangleIndices) { - dest.indices[i] = oldToNewIndex[ti]; - ++i; - } - spart.y = i - spart.x; - dest.parts.push_back(spart); - } - } - - calculateExtentsForTriangleListMesh(dest); - - return dest; -} - -}; diff --git a/libraries/hfm/src/hfm/HFMModelMath.h b/libraries/hfm/src/hfm/HFMModelMath.h deleted file mode 100644 index ef86e7379a..0000000000 --- a/libraries/hfm/src/hfm/HFMModelMath.h +++ /dev/null @@ -1,45 +0,0 @@ -// -// HFMModelMath.h -// model-baker/src/model-baker -// -// Created by Sabrina Shanman on 2019/10/04. -// Copyright 2019 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_hfm_ModelMath_h -#define hifi_hfm_ModelMath_h - -#include "HFM.h" - -namespace hfm { - -void forEachIndex(const hfm::MeshPart& meshPart, std::function func); - -void initializeExtents(Extents& extents); - -void calculateExtentsForTriangleListMesh(TriangleListMesh& triangleListMesh); - -// This can't be moved to model-baker until -void calculateExtentsForShape(hfm::Shape& shape, const std::vector& triangleListMeshes, const std::vector& joints); - -void calculateExtentsForModel(Extents& modelExtents, const std::vector& shapes); - -struct ReweightedDeformers { - std::vector indices; - std::vector weights; - uint16_t weightsPerVertex { 0 }; - bool trimmedToMatch { false }; -}; - -const uint16_t DEFAULT_SKINNING_WEIGHTS_PER_VERTEX = 4; - -ReweightedDeformers getReweightedDeformers(const size_t numMeshVertices, const std::vector skinClusters, const uint16_t weightsPerVertex = DEFAULT_SKINNING_WEIGHTS_PER_VERTEX); - -const TriangleListMesh generateTriangleListMesh(const std::vector& srcVertices, const std::vector& srcParts); - -}; - -#endif // #define hifi_hfm_ModelMath_h diff --git a/libraries/hfm/src/hfm/HFMSerializer.h b/libraries/hfm/src/hfm/HFMSerializer.h index f28ef9f9c3..d0be588d60 100644 --- a/libraries/hfm/src/hfm/HFMSerializer.h +++ b/libraries/hfm/src/hfm/HFMSerializer.h @@ -1,5 +1,5 @@ // -// HFMSerializer.h +// FBXSerializer.h // libraries/hfm/src/hfm // // Created by Sabrina Shanman on 2018/11/07. diff --git a/libraries/model-baker/src/model-baker/Baker.cpp b/libraries/model-baker/src/model-baker/Baker.cpp index d200df211d..47a8db82b8 100644 --- a/libraries/model-baker/src/model-baker/Baker.cpp +++ b/libraries/model-baker/src/model-baker/Baker.cpp @@ -13,61 +13,34 @@ #include "BakerTypes.h" #include "ModelMath.h" -#include "CollectShapeVerticesTask.h" #include "BuildGraphicsMeshTask.h" #include "CalculateMeshNormalsTask.h" #include "CalculateMeshTangentsTask.h" #include "CalculateBlendshapeNormalsTask.h" #include "CalculateBlendshapeTangentsTask.h" #include "PrepareJointsTask.h" -#include "CalculateTransformedExtentsTask.h" #include "BuildDracoMeshTask.h" #include "ParseFlowDataTask.h" -#include namespace baker { class GetModelPartsTask { public: using Input = hfm::Model::Pointer; - using Output = VaryingSet9, hifi::URL, baker::MeshIndicesToModelNames, baker::BlendshapesPerMesh, std::vector, std::vector, std::vector, Extents, std::vector>; + using Output = VaryingSet5, hifi::URL, baker::MeshIndicesToModelNames, baker::BlendshapesPerMesh, std::vector>; using JobModel = Job::ModelIO; void run(const BakeContextPointer& context, const Input& input, Output& output) { const auto& hfmModelIn = input; - output.edit0() = hfmModelIn->meshes; + output.edit0() = hfmModelIn->meshes.toStdVector(); output.edit1() = hfmModelIn->originalURL; output.edit2() = hfmModelIn->meshIndicesToModelNames; auto& blendshapesPerMesh = output.edit3(); blendshapesPerMesh.reserve(hfmModelIn->meshes.size()); - for (size_t i = 0; i < hfmModelIn->meshes.size(); i++) { + for (int i = 0; i < hfmModelIn->meshes.size(); i++) { blendshapesPerMesh.push_back(hfmModelIn->meshes[i].blendshapes.toStdVector()); } - output.edit4() = hfmModelIn->joints; - output.edit5() = hfmModelIn->shapes; - output.edit6() = hfmModelIn->skinDeformers; - output.edit7() = hfmModelIn->meshExtents; - output.edit8() = hfmModelIn->materials; - } - }; - - class BuildMeshTriangleListTask { - public: - using Input = std::vector; - using Output = std::vector; - using JobModel = Job::ModelIO; - - void run(const BakeContextPointer& context, const Input& input, Output& output) { - const auto& meshesIn = input; - auto& indexedTrianglesMeshOut = output; - indexedTrianglesMeshOut.clear(); - indexedTrianglesMeshOut.resize(meshesIn.size()); - - for (size_t i = 0; i < meshesIn.size(); i++) { - auto& mesh = meshesIn[i]; - const auto verticesStd = mesh.vertices.toStdVector(); - indexedTrianglesMeshOut[i] = hfm::generateTriangleListMesh(verticesStd, mesh.parts); - } + output.edit4() = hfmModelIn->joints.toStdVector(); } }; @@ -102,23 +75,21 @@ namespace baker { class BuildMeshesTask { public: - using Input = VaryingSet6, std::vector, std::vector, NormalsPerMesh, TangentsPerMesh, BlendshapesPerMesh>; + using Input = VaryingSet5, std::vector, NormalsPerMesh, TangentsPerMesh, BlendshapesPerMesh>; using Output = std::vector; using JobModel = Job::ModelIO; void run(const BakeContextPointer& context, const Input& input, Output& output) { auto& meshesIn = input.get0(); int numMeshes = (int)meshesIn.size(); - auto& triangleListMeshesIn = input.get1(); - auto& graphicsMeshesIn = input.get2(); - auto& normalsPerMeshIn = input.get3(); - auto& tangentsPerMeshIn = input.get4(); - auto& blendshapesPerMeshIn = input.get5(); + auto& graphicsMeshesIn = input.get1(); + auto& normalsPerMeshIn = input.get2(); + auto& tangentsPerMeshIn = input.get3(); + auto& blendshapesPerMeshIn = input.get4(); auto meshesOut = meshesIn; for (int i = 0; i < numMeshes; i++) { auto& meshOut = meshesOut[i]; - meshOut.triangleListMesh = triangleListMeshesIn[i]; meshOut._mesh = safeGet(graphicsMeshesIn, i); meshOut.normals = QVector::fromStdVector(safeGet(normalsPerMeshIn, i)); meshOut.tangents = QVector::fromStdVector(safeGet(tangentsPerMeshIn, i)); @@ -130,22 +101,17 @@ namespace baker { class BuildModelTask { public: - using Input = VaryingSet9, std::vector, QMap, QHash, FlowData, std::vector, std::vector, Extents>; + using Input = VaryingSet6, std::vector, QMap, QHash, FlowData>; using Output = hfm::Model::Pointer; using JobModel = Job::ModelIO; void run(const BakeContextPointer& context, const Input& input, Output& output) { auto hfmModelOut = input.get0(); - hfmModelOut->meshes = input.get1(); - hfmModelOut->joints = input.get2(); + hfmModelOut->meshes = QVector::fromStdVector(input.get1()); + hfmModelOut->joints = QVector::fromStdVector(input.get2()); hfmModelOut->jointRotationOffsets = input.get3(); hfmModelOut->jointIndices = input.get4(); hfmModelOut->flowData = input.get5(); - hfmModelOut->shapeVertices = input.get6(); - hfmModelOut->shapes = input.get7(); - hfmModelOut->meshExtents = input.get8(); - // These depend on the ShapeVertices - // TODO: Create a task for this rather than calculating it here hfmModelOut->computeKdops(); output = hfmModelOut; } @@ -168,10 +134,6 @@ namespace baker { const auto meshIndicesToModelNames = modelPartsIn.getN(2); const auto blendshapesPerMeshIn = modelPartsIn.getN(3); const auto jointsIn = modelPartsIn.getN(4); - const auto shapesIn = modelPartsIn.getN(5); - const auto skinDeformersIn = modelPartsIn.getN(6); - const auto modelExtentsIn = modelPartsIn.getN(7); - const auto materialsIn = modelPartsIn.getN(8); // Calculate normals and tangents for meshes and blendshapes if they do not exist // Note: Normals are never calculated here for OBJ models. OBJ files optionally define normals on a per-face basis, so for consistency normals are calculated beforehand in OBJSerializer. @@ -183,15 +145,8 @@ namespace baker { const auto calculateBlendshapeTangentsInputs = CalculateBlendshapeTangentsTask::Input(normalsPerBlendshapePerMesh, blendshapesPerMeshIn, meshesIn).asVarying(); const auto tangentsPerBlendshapePerMesh = model.addJob("CalculateBlendshapeTangents", calculateBlendshapeTangentsInputs); - // Calculate shape vertices. These rely on the weight-normalized clusterIndices/clusterWeights in the mesh, and are used later for computing the joint kdops - const auto collectShapeVerticesInputs = CollectShapeVerticesTask::Input(meshesIn, shapesIn, jointsIn, skinDeformersIn).asVarying(); - const auto shapeVerticesPerJoint = model.addJob("CollectShapeVertices", collectShapeVerticesInputs); - - // Build the slim triangle list mesh for each hfm::mesh - const auto triangleListMeshes = model.addJob("BuildMeshTriangleListTask", meshesIn); - // Build the graphics::MeshPointer for each hfm::Mesh - const auto buildGraphicsMeshInputs = BuildGraphicsMeshTask::Input(meshesIn, url, meshIndicesToModelNames, normalsPerMesh, tangentsPerMesh, shapesIn, skinDeformersIn).asVarying(); + const auto buildGraphicsMeshInputs = BuildGraphicsMeshTask::Input(meshesIn, url, meshIndicesToModelNames, normalsPerMesh, tangentsPerMesh).asVarying(); const auto graphicsMeshes = model.addJob("BuildGraphicsMesh", buildGraphicsMeshInputs); // Prepare joint information @@ -201,12 +156,6 @@ namespace baker { const auto jointRotationOffsets = jointInfoOut.getN(1); const auto jointIndices = jointInfoOut.getN(2); - // Use transform information to compute extents - const auto calculateExtentsInputs = CalculateTransformedExtentsTask::Input(modelExtentsIn, triangleListMeshes, shapesIn, jointsOut).asVarying(); - const auto calculateExtentsOutputs = model.addJob("CalculateExtents", calculateExtentsInputs); - const auto modelExtentsOut = calculateExtentsOutputs.getN(0); - const auto shapesOut = calculateExtentsOutputs.getN(1); - // Parse material mapping const auto parseMaterialMappingInputs = ParseMaterialMappingTask::Input(mapping, materialMappingBaseURL).asVarying(); const auto materialMapping = model.addJob("ParseMaterialMapping", parseMaterialMappingInputs); @@ -216,7 +165,7 @@ namespace baker { // TODO: Tangent support (Needs changes to FBXSerializer_Mesh as well) // NOTE: Due to an unresolved linker error, BuildDracoMeshTask is not functional on Android // TODO: Figure out why BuildDracoMeshTask.cpp won't link with draco on Android - const auto buildDracoMeshInputs = BuildDracoMeshTask::Input(shapesOut, meshesIn, materialsIn, normalsPerMesh, tangentsPerMesh).asVarying(); + const auto buildDracoMeshInputs = BuildDracoMeshTask::Input(meshesIn, normalsPerMesh, tangentsPerMesh).asVarying(); const auto buildDracoMeshOutputs = model.addJob("BuildDracoMesh", buildDracoMeshInputs); const auto dracoMeshes = buildDracoMeshOutputs.getN(0); const auto dracoErrors = buildDracoMeshOutputs.getN(1); @@ -228,9 +177,9 @@ namespace baker { // Combine the outputs into a new hfm::Model const auto buildBlendshapesInputs = BuildBlendshapesTask::Input(blendshapesPerMeshIn, normalsPerBlendshapePerMesh, tangentsPerBlendshapePerMesh).asVarying(); const auto blendshapesPerMeshOut = model.addJob("BuildBlendshapes", buildBlendshapesInputs); - const auto buildMeshesInputs = BuildMeshesTask::Input(meshesIn, triangleListMeshes, graphicsMeshes, normalsPerMesh, tangentsPerMesh, blendshapesPerMeshOut).asVarying(); + const auto buildMeshesInputs = BuildMeshesTask::Input(meshesIn, graphicsMeshes, normalsPerMesh, tangentsPerMesh, blendshapesPerMeshOut).asVarying(); const auto meshesOut = model.addJob("BuildMeshes", buildMeshesInputs); - const auto buildModelInputs = BuildModelTask::Input(hfmModelIn, meshesOut, jointsOut, jointRotationOffsets, jointIndices, flowData, shapeVerticesPerJoint, shapesOut, modelExtentsOut).asVarying(); + const auto buildModelInputs = BuildModelTask::Input(hfmModelIn, meshesOut, jointsOut, jointRotationOffsets, jointIndices, flowData).asVarying(); const auto hfmModelOut = model.addJob("BuildModel", buildModelInputs); output = Output(hfmModelOut, materialMapping, dracoMeshes, dracoErrors, materialList); diff --git a/libraries/model-baker/src/model-baker/BakerTypes.h b/libraries/model-baker/src/model-baker/BakerTypes.h index 8760fa6db4..3d16afab2e 100644 --- a/libraries/model-baker/src/model-baker/BakerTypes.h +++ b/libraries/model-baker/src/model-baker/BakerTypes.h @@ -36,14 +36,6 @@ namespace baker { using TangentsPerBlendshape = std::vector>; using MeshIndicesToModelNames = QHash; - - class ReweightedDeformers { - public: - std::vector indices; - std::vector weights; - uint16_t weightsPerVertex { 0 }; - bool trimmedToMatch { false }; - }; }; #endif // hifi_BakerTypes_h diff --git a/libraries/model-baker/src/model-baker/BuildDracoMeshTask.cpp b/libraries/model-baker/src/model-baker/BuildDracoMeshTask.cpp index 5c9d1dac25..12347c30b1 100644 --- a/libraries/model-baker/src/model-baker/BuildDracoMeshTask.cpp +++ b/libraries/model-baker/src/model-baker/BuildDracoMeshTask.cpp @@ -39,47 +39,19 @@ #include "ModelMath.h" #ifndef Q_OS_ANDROID - -void reindexMaterials(const std::vector& originalMaterialIndices, std::vector& materials, std::vector& materialIndices) { - materialIndices.resize(originalMaterialIndices.size()); - for (size_t i = 0; i < originalMaterialIndices.size(); ++i) { - uint32_t material = originalMaterialIndices[i]; - auto foundMaterial = std::find(materials.cbegin(), materials.cend(), material); - if (foundMaterial == materials.cend()) { - materials.push_back(material); - materialIndices[i] = (uint16_t)(materials.size() - 1); - } else { - materialIndices[i] = (uint16_t)(foundMaterial - materials.cbegin()); +std::vector createMaterialList(const hfm::Mesh& mesh) { + std::vector materialList; + for (const auto& meshPart : mesh.parts) { + auto materialID = QVariant(meshPart.materialID).toByteArray(); + const auto materialIt = std::find(materialList.cbegin(), materialList.cend(), materialID); + if (materialIt == materialList.cend()) { + materialList.push_back(materialID); } } + return materialList; } -void createMaterialLists(const std::vector& shapes, const std::vector& meshes, const std::vector& hfmMaterials, std::vector>& materialIndexLists, std::vector>& partMaterialIndicesPerMesh) { - std::vector> materialsPerMesh; - for (const auto& mesh : meshes) { - materialsPerMesh.emplace_back(mesh.parts.size(), hfm::UNDEFINED_KEY); - } - for (const auto& shape : shapes) { - materialsPerMesh[shape.mesh][shape.meshPart] = shape.material; - } - - materialIndexLists.resize(materialsPerMesh.size()); - partMaterialIndicesPerMesh.resize(materialsPerMesh.size()); - for (size_t i = 0; i < materialsPerMesh.size(); ++i) { - const std::vector& materials = materialsPerMesh[i]; - std::vector uniqueMaterials; - - reindexMaterials(materials, uniqueMaterials, partMaterialIndicesPerMesh[i]); - - materialIndexLists[i].reserve(uniqueMaterials.size()); - for (const uint32_t material : uniqueMaterials) { - const auto& hfmMaterial = hfmMaterials[material]; - materialIndexLists[i].push_back(QVariant(hfmMaterial.materialID).toByteArray()); - } - } -} - -std::tuple, bool> createDracoMesh(const hfm::Mesh& mesh, const std::vector& normals, const std::vector& tangents, const std::vector& partMaterialIndices) { +std::tuple, bool> createDracoMesh(const hfm::Mesh& mesh, const std::vector& normals, const std::vector& tangents, const std::vector& materialList) { Q_ASSERT(normals.size() == 0 || (int)normals.size() == mesh.vertices.size()); Q_ASSERT(mesh.colors.size() == 0 || mesh.colors.size() == mesh.vertices.size()); Q_ASSERT(mesh.texCoords.size() == 0 || mesh.texCoords.size() == mesh.vertices.size()); @@ -150,9 +122,11 @@ std::tuple, bool> createDracoMesh(const hfm::Mesh& auto partIndex = 0; draco::FaceIndex face; + uint16_t materialID; for (auto& part : mesh.parts) { - uint16_t materialID = partMaterialIndices[partIndex]; + auto materialIt = std::find(materialList.cbegin(), materialList.cend(), QVariant(part.materialID).toByteArray()); + materialID = (uint16_t)(materialIt - materialList.cbegin()); auto addFace = [&](const QVector& indices, int index, draco::FaceIndex face) { int32_t idx0 = indices[index]; @@ -240,33 +214,30 @@ void BuildDracoMeshTask::run(const baker::BakeContextPointer& context, const Inp #ifdef Q_OS_ANDROID qCWarning(model_baker) << "BuildDracoMesh is disabled on Android. Output meshes will be empty."; #else - const auto& shapes = input.get0(); - const auto& meshes = input.get1(); - const auto& materials = input.get2(); - const auto& normalsPerMesh = input.get3(); - const auto& tangentsPerMesh = input.get4(); + const auto& meshes = input.get0(); + const auto& normalsPerMesh = input.get1(); + const auto& tangentsPerMesh = input.get2(); auto& dracoBytesPerMesh = output.edit0(); auto& dracoErrorsPerMesh = output.edit1(); - auto& materialLists = output.edit2(); - std::vector> partMaterialIndicesPerMesh; - createMaterialLists(shapes, meshes, materials, materialLists, partMaterialIndicesPerMesh); dracoBytesPerMesh.reserve(meshes.size()); // vector is an exception to the std::vector conventions as it is a bit field // So a bool reference to an element doesn't work dracoErrorsPerMesh.resize(meshes.size()); + materialLists.reserve(meshes.size()); for (size_t i = 0; i < meshes.size(); i++) { const auto& mesh = meshes[i]; const auto& normals = baker::safeGet(normalsPerMesh, i); const auto& tangents = baker::safeGet(tangentsPerMesh, i); dracoBytesPerMesh.emplace_back(); auto& dracoBytes = dracoBytesPerMesh.back(); - const auto& partMaterialIndices = partMaterialIndicesPerMesh[i]; + materialLists.push_back(createMaterialList(mesh)); + const auto& materialList = materialLists.back(); bool dracoError; std::unique_ptr dracoMesh; - std::tie(dracoMesh, dracoError) = createDracoMesh(mesh, normals, tangents, partMaterialIndices); + std::tie(dracoMesh, dracoError) = createDracoMesh(mesh, normals, tangents, materialList); dracoErrorsPerMesh[i] = dracoError; if (dracoMesh) { diff --git a/libraries/model-baker/src/model-baker/BuildDracoMeshTask.h b/libraries/model-baker/src/model-baker/BuildDracoMeshTask.h index a83f2ae163..ac9ad648ab 100644 --- a/libraries/model-baker/src/model-baker/BuildDracoMeshTask.h +++ b/libraries/model-baker/src/model-baker/BuildDracoMeshTask.h @@ -33,7 +33,7 @@ public: class BuildDracoMeshTask { public: using Config = BuildDracoMeshConfig; - using Input = baker::VaryingSet5, std::vector, std::vector, baker::NormalsPerMesh, baker::TangentsPerMesh>; + using Input = baker::VaryingSet3, baker::NormalsPerMesh, baker::TangentsPerMesh>; using Output = baker::VaryingSet3, std::vector, std::vector>>; using JobModel = baker::Job::ModelIO; diff --git a/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.cpp b/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.cpp index 66429ed2c4..2467da7656 100644 --- a/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.cpp +++ b/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.cpp @@ -2,8 +2,8 @@ // BuildGraphicsMeshTask.h // model-baker/src/model-baker // -// Created by Sabrina Shanman on 2019/09/16. -// Copyright 2019 High Fidelity, Inc. +// Created by Sabrina Shanman on 2018/12/06. +// Copyright 2018 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 @@ -15,7 +15,6 @@ #include #include "ModelBakerLogging.h" -#include #include "ModelMath.h" using vec2h = glm::tvec2; @@ -28,7 +27,7 @@ glm::vec3 normalizeDirForPacking(const glm::vec3& dir) { return dir; } -void buildGraphicsMesh(const hfm::Mesh& hfmMesh, graphics::MeshPointer& graphicsMeshPointer, const baker::MeshNormals& meshNormals, const baker::MeshTangents& meshTangentsIn, uint16_t numDeformerControllers) { +void buildGraphicsMesh(const hfm::Mesh& hfmMesh, graphics::MeshPointer& graphicsMeshPointer, const baker::MeshNormals& meshNormals, const baker::MeshTangents& meshTangentsIn) { auto graphicsMesh = std::make_shared(); // Fill tangents with a dummy value to force tangents to be present if there are normals @@ -87,24 +86,25 @@ void buildGraphicsMesh(const hfm::Mesh& hfmMesh, graphics::MeshPointer& graphics // Support for 4 skinning clusters: // 4 Indices are uint8 ideally, uint16 if more than 256. - const auto clusterIndiceElement = ((numDeformerControllers < (uint16_t)UINT8_MAX) ? gpu::Element(gpu::VEC4, gpu::UINT8, gpu::XYZW) : gpu::Element(gpu::VEC4, gpu::UINT16, gpu::XYZW)); + const auto clusterIndiceElement = (hfmMesh.clusters.size() < UINT8_MAX ? gpu::Element(gpu::VEC4, gpu::UINT8, gpu::XYZW) : gpu::Element(gpu::VEC4, gpu::UINT16, gpu::XYZW)); // 4 Weights are normalized 16bits const auto clusterWeightElement = gpu::Element(gpu::VEC4, gpu::NUINT16, gpu::XYZW); - // Record cluster sizes - const size_t numVertClusters = hfmMesh.clusterWeightsPerVertex == 0 ? 0 : hfmMesh.clusterIndices.size() / hfmMesh.clusterWeightsPerVertex; - const size_t clusterIndicesSize = numVertClusters * clusterIndiceElement.getSize(); - const size_t clusterWeightsSize = numVertClusters * clusterWeightElement.getSize(); + // Cluster indices and weights must be the same sizes + const int NUM_CLUSTERS_PER_VERT = 4; + const int numVertClusters = (hfmMesh.clusterIndices.size() == hfmMesh.clusterWeights.size() ? hfmMesh.clusterIndices.size() / NUM_CLUSTERS_PER_VERT : 0); + const int clusterIndicesSize = numVertClusters * clusterIndiceElement.getSize(); + const int clusterWeightsSize = numVertClusters * clusterWeightElement.getSize(); // Decide on where to put what seequencially in a big buffer: - const size_t positionsOffset = 0; - const size_t normalsAndTangentsOffset = positionsOffset + positionsSize; - const size_t colorsOffset = normalsAndTangentsOffset + normalsAndTangentsSize; - const size_t texCoordsOffset = colorsOffset + colorsSize; - const size_t texCoords1Offset = texCoordsOffset + texCoordsSize; - const size_t clusterIndicesOffset = texCoords1Offset + texCoords1Size; - const size_t clusterWeightsOffset = clusterIndicesOffset + clusterIndicesSize; - const size_t totalVertsSize = clusterWeightsOffset + clusterWeightsSize; + const int positionsOffset = 0; + const int normalsAndTangentsOffset = positionsOffset + positionsSize; + const int colorsOffset = normalsAndTangentsOffset + normalsAndTangentsSize; + const int texCoordsOffset = colorsOffset + colorsSize; + const int texCoords1Offset = texCoordsOffset + texCoordsSize; + const int clusterIndicesOffset = texCoords1Offset + texCoords1Size; + const int clusterWeightsOffset = clusterIndicesOffset + clusterIndicesSize; + const int totalVertsSize = clusterWeightsOffset + clusterWeightsSize; // Copy all vertex data in a single buffer auto vertBuffer = std::make_shared(); @@ -181,22 +181,22 @@ void buildGraphicsMesh(const hfm::Mesh& hfmMesh, graphics::MeshPointer& graphics // Clusters data if (clusterIndicesSize > 0) { - if (numDeformerControllers < (uint16_t)UINT8_MAX) { + if (hfmMesh.clusters.size() < UINT8_MAX) { // yay! we can fit the clusterIndices within 8-bits - int32_t numIndices = (int32_t)hfmMesh.clusterIndices.size(); - std::vector packedDeformerIndices; - packedDeformerIndices.resize(numIndices); + int32_t numIndices = hfmMesh.clusterIndices.size(); + QVector clusterIndices; + clusterIndices.resize(numIndices); for (int32_t i = 0; i < numIndices; ++i) { assert(hfmMesh.clusterIndices[i] <= UINT8_MAX); - packedDeformerIndices[i] = (uint8_t)(hfmMesh.clusterIndices[i]); + clusterIndices[i] = (uint8_t)(hfmMesh.clusterIndices[i]); } - vertBuffer->setSubData(clusterIndicesOffset, clusterIndicesSize, (const gpu::Byte*) packedDeformerIndices.data()); + vertBuffer->setSubData(clusterIndicesOffset, clusterIndicesSize, (const gpu::Byte*) clusterIndices.constData()); } else { - vertBuffer->setSubData(clusterIndicesOffset, clusterIndicesSize, (const gpu::Byte*) hfmMesh.clusterIndices.data()); + vertBuffer->setSubData(clusterIndicesOffset, clusterIndicesSize, (const gpu::Byte*) hfmMesh.clusterIndices.constData()); } } if (clusterWeightsSize > 0) { - vertBuffer->setSubData(clusterWeightsOffset, clusterWeightsSize, (const gpu::Byte*) hfmMesh.clusterWeights.data()); + vertBuffer->setSubData(clusterWeightsOffset, clusterWeightsSize, (const gpu::Byte*) hfmMesh.clusterWeights.constData()); } @@ -206,7 +206,7 @@ void buildGraphicsMesh(const hfm::Mesh& hfmMesh, graphics::MeshPointer& graphics auto vertexBufferStream = std::make_shared(); gpu::BufferPointer attribBuffer; - size_t totalAttribBufferSize = totalVertsSize; + int totalAttribBufferSize = totalVertsSize; gpu::uint8 posChannel = 0; gpu::uint8 tangentChannel = posChannel; gpu::uint8 attribChannel = posChannel; @@ -377,17 +377,6 @@ void BuildGraphicsMeshTask::run(const baker::BakeContextPointer& context, const const auto& meshIndicesToModelNames = input.get2(); const auto& normalsPerMesh = input.get3(); const auto& tangentsPerMesh = input.get4(); - const auto& shapes = input.get5(); - const auto& skinDeformers = input.get6(); - - // Currently, there is only (at most) one skinDeformer per mesh - // An undefined shape.skinDeformer has the value hfm::UNDEFINED_KEY - std::vector skinDeformerPerMesh; - skinDeformerPerMesh.resize(meshes.size(), hfm::UNDEFINED_KEY); - for (const auto& shape : shapes) { - uint32_t skinDeformerIndex = shape.skinDeformer; - skinDeformerPerMesh[shape.mesh] = skinDeformerIndex; - } auto& graphicsMeshes = output; @@ -395,16 +384,9 @@ void BuildGraphicsMeshTask::run(const baker::BakeContextPointer& context, const for (int i = 0; i < n; i++) { graphicsMeshes.emplace_back(); auto& graphicsMesh = graphicsMeshes[i]; - - uint16_t numDeformerControllers = 0; - uint32_t skinDeformerIndex = skinDeformerPerMesh[i]; - if (skinDeformerIndex != hfm::UNDEFINED_KEY) { - const hfm::SkinDeformer& skinDeformer = skinDeformers[skinDeformerIndex]; - numDeformerControllers = (uint16_t)skinDeformer.clusters.size(); - } - + // Try to create the graphics::Mesh - buildGraphicsMesh(meshes[i], graphicsMesh, baker::safeGet(normalsPerMesh, i), baker::safeGet(tangentsPerMesh, i), numDeformerControllers); + buildGraphicsMesh(meshes[i], graphicsMesh, baker::safeGet(normalsPerMesh, i), baker::safeGet(tangentsPerMesh, i)); // Choose a name for the mesh if (graphicsMesh) { diff --git a/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.h b/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.h index 34128eabe8..bb4136c086 100644 --- a/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.h +++ b/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.h @@ -2,8 +2,8 @@ // BuildGraphicsMeshTask.h // model-baker/src/model-baker // -// Created by Sabrina Shanman on 2019/09/16. -// Copyright 2019 High Fidelity, Inc. +// Created by Sabrina Shanman on 2018/12/06. +// Copyright 2018 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 @@ -20,7 +20,7 @@ class BuildGraphicsMeshTask { public: - using Input = baker::VaryingSet7, hifi::URL, baker::MeshIndicesToModelNames, baker::NormalsPerMesh, baker::TangentsPerMesh, std::vector, std::vector>; + using Input = baker::VaryingSet5, hifi::URL, baker::MeshIndicesToModelNames, baker::NormalsPerMesh, baker::TangentsPerMesh>; using Output = std::vector; using JobModel = baker::Job::ModelIO; diff --git a/libraries/model-baker/src/model-baker/CalculateMeshTangentsTask.cpp b/libraries/model-baker/src/model-baker/CalculateMeshTangentsTask.cpp index 6147ce72e7..297d8cbde7 100644 --- a/libraries/model-baker/src/model-baker/CalculateMeshTangentsTask.cpp +++ b/libraries/model-baker/src/model-baker/CalculateMeshTangentsTask.cpp @@ -30,7 +30,7 @@ void CalculateMeshTangentsTask::run(const baker::BakeContextPointer& context, co // Otherwise confirm if we have the normals and texcoords needed if (!tangentsIn.empty()) { tangentsOut = tangentsIn.toStdVector(); - } else if (!normals.empty() && mesh.vertices.size() <= mesh.texCoords.size()) { + } else if (!normals.empty() && mesh.vertices.size() == mesh.texCoords.size()) { tangentsOut.resize(normals.size()); baker::calculateTangents(mesh, [&mesh, &normals, &tangentsOut](int firstIndex, int secondIndex, glm::vec3* outVertices, glm::vec2* outTexCoords, glm::vec3& outNormal) { diff --git a/libraries/model-baker/src/model-baker/CalculateTransformedExtentsTask.cpp b/libraries/model-baker/src/model-baker/CalculateTransformedExtentsTask.cpp deleted file mode 100644 index 028dba4939..0000000000 --- a/libraries/model-baker/src/model-baker/CalculateTransformedExtentsTask.cpp +++ /dev/null @@ -1,41 +0,0 @@ -// -// CalculateTransformedExtentsTask.cpp -// model-baker/src/model-baker -// -// Created by Sabrina Shanman on 2019/10/04. -// Copyright 2019 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 "CalculateTransformedExtentsTask.h" - -#include "hfm/HFMModelMath.h" - -void CalculateTransformedExtentsTask::run(const baker::BakeContextPointer& context, const Input& input, Output& output) { - const auto& modelExtentsIn = input.get0(); - const auto& triangleListMeshes = input.get1(); - const auto& shapesIn = input.get2(); - const auto& joints = input.get3(); - auto& modelExtentsOut = output.edit0(); - auto& shapesOut = output.edit1(); - - shapesOut.reserve(shapesIn.size()); - for (size_t i = 0; i < shapesIn.size(); ++i) { - shapesOut.push_back(shapesIn[i]); - auto& shapeOut = shapesOut.back(); - - auto& shapeExtents = shapeOut.transformedExtents; - if (shapeExtents.isValid()) { - continue; - } - - hfm::calculateExtentsForShape(shapeOut, triangleListMeshes, joints); - } - - modelExtentsOut = modelExtentsIn; - if (!modelExtentsOut.isValid()) { - hfm::calculateExtentsForModel(modelExtentsOut, shapesOut); - } -} diff --git a/libraries/model-baker/src/model-baker/CalculateTransformedExtentsTask.h b/libraries/model-baker/src/model-baker/CalculateTransformedExtentsTask.h deleted file mode 100644 index aed089a13d..0000000000 --- a/libraries/model-baker/src/model-baker/CalculateTransformedExtentsTask.h +++ /dev/null @@ -1,29 +0,0 @@ -// -// CalculateTransformedExtentsTask.h -// model-baker/src/model-baker -// -// Created by Sabrina Shanman on 2019/10/04. -// Copyright 2019 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_CalculateExtentsTask_h -#define hifi_CalculateExtentsTask_h - -#include "Engine.h" -#include "hfm/HFM.h" - -// Calculates any undefined extents in the shapes and the model. Precalculated extents will be left alone. -// Bind extents will currently not be calculated -class CalculateTransformedExtentsTask { -public: - using Input = baker::VaryingSet4, std::vector, std::vector>; - using Output = baker::VaryingSet2>; - using JobModel = baker::Job::ModelIO; - - void run(const baker::BakeContextPointer& context, const Input& input, Output& output); -}; - -#endif // hifi_CalculateExtentsTask_h diff --git a/libraries/model-baker/src/model-baker/CollectShapeVerticesTask.cpp b/libraries/model-baker/src/model-baker/CollectShapeVerticesTask.cpp deleted file mode 100644 index 13bc75ced9..0000000000 --- a/libraries/model-baker/src/model-baker/CollectShapeVerticesTask.cpp +++ /dev/null @@ -1,91 +0,0 @@ -// -// CollectShapeVerticesTask.h -// model-baker/src/model-baker -// -// Created by Sabrina Shanman on 2019/09/27. -// Copyright 2019 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 "CollectShapeVerticesTask.h" - -#include - -#include - -// Used to track and avoid duplicate shape vertices, as multiple shapes can have the same mesh and skinDeformer -class VertexSource { -public: - uint32_t mesh; - uint32_t skinDeformer; - - bool operator==(const VertexSource& other) const { - return mesh == other.mesh && - skinDeformer == other.skinDeformer; - } -}; - -void CollectShapeVerticesTask::run(const baker::BakeContextPointer& context, const Input& input, Output& output) { - const auto& meshes = input.get0(); - const auto& shapes = input.get1(); - const auto& joints = input.get2(); - const auto& skinDeformers = input.get3(); - auto& shapeVerticesPerJoint = output; - - shapeVerticesPerJoint.resize(joints.size()); - std::vector> vertexSourcesPerJoint; - vertexSourcesPerJoint.resize(joints.size()); - for (size_t i = 0; i < shapes.size(); ++i) { - const auto& shape = shapes[i]; - const uint32_t skinDeformerKey = shape.skinDeformer; - if (skinDeformerKey == hfm::UNDEFINED_KEY) { - continue; - } - - VertexSource vertexSource; - vertexSource.mesh = shape.mesh; - vertexSource.skinDeformer = skinDeformerKey; - - const auto& skinDeformer = skinDeformers[skinDeformerKey]; - for (size_t j = 0; j < skinDeformer.clusters.size(); ++j) { - const auto& cluster = skinDeformer.clusters[j]; - const uint32_t jointIndex = cluster.jointIndex; - - auto& vertexSources = vertexSourcesPerJoint[jointIndex]; - if (std::find(vertexSources.cbegin(), vertexSources.cend(), vertexSource) == vertexSources.cend()) { - vertexSources.push_back(vertexSource); - auto& shapeVertices = shapeVerticesPerJoint[jointIndex]; - - const auto& mesh = meshes[shape.mesh]; - const auto& vertices = mesh.vertices; - const glm::mat4 meshToJoint = cluster.inverseBindMatrix; - - const uint16_t weightsPerVertex = mesh.clusterWeightsPerVertex; - if (weightsPerVertex == 0) { - for (int vertexIndex = 0; vertexIndex < (int)vertices.size(); ++vertexIndex) { - const glm::mat4 vertexTransform = meshToJoint * glm::translate(vertices[vertexIndex]); - shapeVertices.push_back(extractTranslation(vertexTransform)); - } - } else { - for (int vertexIndex = 0; vertexIndex < (int)vertices.size(); ++vertexIndex) { - for (uint16_t weightIndex = 0; weightIndex < weightsPerVertex; ++weightIndex) { - const size_t index = vertexIndex*weightsPerVertex + weightIndex; - const uint16_t clusterIndex = mesh.clusterIndices[index]; - const uint16_t clusterWeight = mesh.clusterWeights[index]; - // Remember vertices associated with this joint with at least 1/4 weight - const uint16_t EXPANSION_WEIGHT_THRESHOLD = std::numeric_limits::max() / 4; - if (clusterIndex != j || clusterWeight < EXPANSION_WEIGHT_THRESHOLD) { - continue; - } - - const glm::mat4 vertexTransform = meshToJoint * glm::translate(vertices[vertexIndex]); - shapeVertices.push_back(extractTranslation(vertexTransform)); - } - } - } - } - } - } -} diff --git a/libraries/model-baker/src/model-baker/CollectShapeVerticesTask.h b/libraries/model-baker/src/model-baker/CollectShapeVerticesTask.h deleted file mode 100644 index a665004d6b..0000000000 --- a/libraries/model-baker/src/model-baker/CollectShapeVerticesTask.h +++ /dev/null @@ -1,30 +0,0 @@ -// -// CollectShapeVerticesTask.h -// model-baker/src/model-baker -// -// Created by Sabrina Shanman on 2019/09/27. -// Copyright 2019 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_CollectShapeVerticesTask_h -#define hifi_CollectShapeVerticesTask_h - -#include - -#include "Engine.h" -#include "BakerTypes.h" - -class CollectShapeVerticesTask { -public: - using Input = baker::VaryingSet4, std::vector, std::vector, std::vector>; - using Output = std::vector; - using JobModel = baker::Job::ModelIO; - - void run(const baker::BakeContextPointer& context, const Input& input, Output& output); -}; - -#endif // hifi_CollectShapeVerticesTask_h - diff --git a/libraries/model-networking/src/model-networking/ModelCache.cpp b/libraries/model-networking/src/model-networking/ModelCache.cpp index bb911c6914..1fcfcfcc70 100644 --- a/libraries/model-networking/src/model-networking/ModelCache.cpp +++ b/libraries/model-networking/src/model-networking/ModelCache.cpp @@ -203,23 +203,23 @@ QUrl resolveTextureBaseUrl(const QUrl& url, const QUrl& textureBaseUrl) { return textureBaseUrl.isValid() ? textureBaseUrl : url; } -ModelResource::ModelResource(const ModelResource& other) : +GeometryResource::GeometryResource(const GeometryResource& other) : Resource(other), - NetworkModel(other), + Geometry(other), _modelLoader(other._modelLoader), _mappingPair(other._mappingPair), _textureBaseURL(other._textureBaseURL), _combineParts(other._combineParts), _isCacheable(other._isCacheable) { - if (other._modelResource) { + if (other._geometryResource) { _startedLoading = false; } } -void ModelResource::downloadFinished(const QByteArray& data) { +void GeometryResource::downloadFinished(const QByteArray& data) { if (_effectiveBaseURL.fileName().toLower().endsWith(".fst")) { - PROFILE_ASYNC_BEGIN(resource_parse_geometry, "ModelResource::downloadFinished", _url.toString(), { { "url", _url.toString() } }); + PROFILE_ASYNC_BEGIN(resource_parse_geometry, "GeometryResource::downloadFinished", _url.toString(), { { "url", _url.toString() } }); // store parsed contents of FST file _mapping = FSTReader::readMapping(data); @@ -267,19 +267,19 @@ void ModelResource::downloadFinished(const QByteArray& data) { auto modelCache = DependencyManager::get(); GeometryExtra extra { GeometryMappingPair(base, _mapping), _textureBaseURL, false }; - // Get the raw ModelResource - _modelResource = modelCache->getResource(url, QUrl(), &extra, std::hash()(extra)).staticCast(); + // Get the raw GeometryResource + _geometryResource = modelCache->getResource(url, QUrl(), &extra, std::hash()(extra)).staticCast(); // Avoid caching nested resources - their references will be held by the parent - _modelResource->_isCacheable = false; + _geometryResource->_isCacheable = false; - if (_modelResource->isLoaded()) { - onGeometryMappingLoaded(!_modelResource->getURL().isEmpty()); + if (_geometryResource->isLoaded()) { + onGeometryMappingLoaded(!_geometryResource->getURL().isEmpty()); } else { if (_connection) { disconnect(_connection); } - _connection = connect(_modelResource.data(), &Resource::finished, this, &ModelResource::onGeometryMappingLoaded); + _connection = connect(_geometryResource.data(), &Resource::finished, this, &GeometryResource::onGeometryMappingLoaded); } } } else { @@ -291,31 +291,32 @@ void ModelResource::downloadFinished(const QByteArray& data) { } } -void ModelResource::onGeometryMappingLoaded(bool success) { - if (success && _modelResource) { - _hfmModel = _modelResource->_hfmModel; - _materialMapping = _modelResource->_materialMapping; - _meshes = _modelResource->_meshes; - _materials = _modelResource->_materials; +void GeometryResource::onGeometryMappingLoaded(bool success) { + if (success && _geometryResource) { + _hfmModel = _geometryResource->_hfmModel; + _materialMapping = _geometryResource->_materialMapping; + _meshParts = _geometryResource->_meshParts; + _meshes = _geometryResource->_meshes; + _materials = _geometryResource->_materials; // Avoid holding onto extra references - _modelResource.reset(); + _geometryResource.reset(); // Make sure connection will not trigger again disconnect(_connection); // FIXME Should not have to do this } - PROFILE_ASYNC_END(resource_parse_geometry, "ModelResource::downloadFinished", _url.toString()); + PROFILE_ASYNC_END(resource_parse_geometry, "GeometryResource::downloadFinished", _url.toString()); finishedLoading(success); } -void ModelResource::setExtra(void* extra) { +void GeometryResource::setExtra(void* extra) { const GeometryExtra* geometryExtra = static_cast(extra); _mappingPair = geometryExtra ? geometryExtra->mapping : GeometryMappingPair(QUrl(), QVariantHash()); _textureBaseURL = geometryExtra ? resolveTextureBaseUrl(_url, geometryExtra->textureBaseUrl) : QUrl(); _combineParts = geometryExtra ? geometryExtra->combineParts : true; } -void ModelResource::setGeometryDefinition(HFMModel::Pointer hfmModel, const MaterialMapping& materialMapping) { +void GeometryResource::setGeometryDefinition(HFMModel::Pointer hfmModel, const MaterialMapping& materialMapping) { // Assume ownership of the processed HFMModel _hfmModel = hfmModel; _materialMapping = materialMapping; @@ -328,23 +329,31 @@ void ModelResource::setGeometryDefinition(HFMModel::Pointer hfmModel, const Mate } std::shared_ptr meshes = std::make_shared(); + std::shared_ptr parts = std::make_shared(); int meshID = 0; for (const HFMMesh& mesh : _hfmModel->meshes) { // Copy mesh pointers meshes->emplace_back(mesh._mesh); + int partID = 0; + for (const HFMMeshPart& part : mesh.parts) { + // Construct local parts + parts->push_back(std::make_shared(meshID, partID, (int)materialIDAtlas[part.materialID])); + partID++; + } meshID++; } _meshes = meshes; + _meshParts = parts; finishedLoading(true); } -void ModelResource::deleter() { +void GeometryResource::deleter() { resetTextures(); Resource::deleter(); } -void ModelResource::setTextures() { +void GeometryResource::setTextures() { if (_hfmModel) { for (const HFMMaterial& material : _hfmModel->materials) { _materials.push_back(std::make_shared(material, _textureBaseURL)); @@ -352,7 +361,7 @@ void ModelResource::setTextures() { } } -void ModelResource::resetTextures() { +void GeometryResource::resetTextures() { _materials.clear(); } @@ -368,17 +377,17 @@ ModelCache::ModelCache() { } QSharedPointer ModelCache::createResource(const QUrl& url) { - return QSharedPointer(new ModelResource(url, _modelLoader), &ModelResource::deleter); + return QSharedPointer(new GeometryResource(url, _modelLoader), &GeometryResource::deleter); } QSharedPointer ModelCache::createResourceCopy(const QSharedPointer& resource) { - return QSharedPointer(new ModelResource(*resource.staticCast()), &ModelResource::deleter); + return QSharedPointer(new GeometryResource(*resource.staticCast()), &GeometryResource::deleter); } -ModelResource::Pointer ModelCache::getModelResource(const QUrl& url, const GeometryMappingPair& mapping, const QUrl& textureBaseUrl) { +GeometryResource::Pointer ModelCache::getGeometryResource(const QUrl& url, const GeometryMappingPair& mapping, const QUrl& textureBaseUrl) { bool combineParts = true; GeometryExtra geometryExtra = { mapping, textureBaseUrl, combineParts }; - ModelResource::Pointer resource = getResource(url, QUrl(), &geometryExtra, std::hash()(geometryExtra)).staticCast(); + GeometryResource::Pointer resource = getResource(url, QUrl(), &geometryExtra, std::hash()(geometryExtra)).staticCast(); if (resource) { if (resource->isLoaded() && resource->shouldSetTextures()) { resource->setTextures(); @@ -387,12 +396,12 @@ ModelResource::Pointer ModelCache::getModelResource(const QUrl& url, const Geome return resource; } -ModelResource::Pointer ModelCache::getCollisionModelResource(const QUrl& url, +GeometryResource::Pointer ModelCache::getCollisionGeometryResource(const QUrl& url, const GeometryMappingPair& mapping, const QUrl& textureBaseUrl) { bool combineParts = false; GeometryExtra geometryExtra = { mapping, textureBaseUrl, combineParts }; - ModelResource::Pointer resource = getResource(url, QUrl(), &geometryExtra, std::hash()(geometryExtra)).staticCast(); + GeometryResource::Pointer resource = getResource(url, QUrl(), &geometryExtra, std::hash()(geometryExtra)).staticCast(); if (resource) { if (resource->isLoaded() && resource->shouldSetTextures()) { resource->setTextures(); @@ -401,7 +410,7 @@ ModelResource::Pointer ModelCache::getCollisionModelResource(const QUrl& url, return resource; } -const QVariantMap NetworkModel::getTextures() const { +const QVariantMap Geometry::getTextures() const { QVariantMap textures; for (const auto& material : _materials) { for (const auto& texture : material->_textures) { @@ -415,21 +424,22 @@ const QVariantMap NetworkModel::getTextures() const { } // FIXME: The materials should only be copied when modified, but the Model currently caches the original -NetworkModel::NetworkModel(const NetworkModel& networkModel) { - _hfmModel = networkModel._hfmModel; - _materialMapping = networkModel._materialMapping; - _meshes = networkModel._meshes; +Geometry::Geometry(const Geometry& geometry) { + _hfmModel = geometry._hfmModel; + _materialMapping = geometry._materialMapping; + _meshes = geometry._meshes; + _meshParts = geometry._meshParts; - _materials.reserve(networkModel._materials.size()); - for (const auto& material : networkModel._materials) { + _materials.reserve(geometry._materials.size()); + for (const auto& material : geometry._materials) { _materials.push_back(std::make_shared(*material)); } - _animGraphOverrideUrl = networkModel._animGraphOverrideUrl; - _mapping = networkModel._mapping; + _animGraphOverrideUrl = geometry._animGraphOverrideUrl; + _mapping = geometry._mapping; } -void NetworkModel::setTextures(const QVariantMap& textureMap) { +void Geometry::setTextures(const QVariantMap& textureMap) { if (_meshes->size() > 0) { for (auto& material : _materials) { // Check if any material textures actually changed @@ -437,7 +447,7 @@ void NetworkModel::setTextures(const QVariantMap& textureMap) { [&textureMap](const NetworkMaterial::Textures::value_type& it) { return it.second.texture && textureMap.contains(it.second.name); })) { // FIXME: The Model currently caches the materials (waste of space!) - // so they must be copied in the NetworkModel copy-ctor + // so they must be copied in the Geometry copy-ctor // if (material->isOriginal()) { // // Copy the material to avoid mutating the cached version // material = std::make_shared(*material); @@ -451,11 +461,11 @@ void NetworkModel::setTextures(const QVariantMap& textureMap) { // If we only use cached textures, they should all be loaded areTexturesLoaded(); } else { - qCWarning(modelnetworking) << "Ignoring setTextures(); NetworkModel not ready"; + qCWarning(modelnetworking) << "Ignoring setTextures(); geometry not ready"; } } -bool NetworkModel::areTexturesLoaded() const { +bool Geometry::areTexturesLoaded() const { if (!_areTexturesLoaded) { for (auto& material : _materials) { if (material->isMissingTexture()) { @@ -490,28 +500,30 @@ bool NetworkModel::areTexturesLoaded() const { return true; } -const std::shared_ptr NetworkModel::getShapeMaterial(int shapeID) const { - uint32_t materialID = getHFMModel().shapes[shapeID].material; - if (materialID < (uint32_t)_materials.size()) { - return _materials[materialID]; +const std::shared_ptr Geometry::getShapeMaterial(int partID) const { + if ((partID >= 0) && (partID < (int)_meshParts->size())) { + int materialID = _meshParts->at(partID)->materialID; + if ((materialID >= 0) && (materialID < (int)_materials.size())) { + return _materials[materialID]; + } } return nullptr; } -void ModelResourceWatcher::startWatching() { - connect(_resource.data(), &Resource::finished, this, &ModelResourceWatcher::resourceFinished); - connect(_resource.data(), &Resource::onRefresh, this, &ModelResourceWatcher::resourceRefreshed); +void GeometryResourceWatcher::startWatching() { + connect(_resource.data(), &Resource::finished, this, &GeometryResourceWatcher::resourceFinished); + connect(_resource.data(), &Resource::onRefresh, this, &GeometryResourceWatcher::resourceRefreshed); if (_resource->isLoaded()) { resourceFinished(!_resource->getURL().isEmpty()); } } -void ModelResourceWatcher::stopWatching() { - disconnect(_resource.data(), &Resource::finished, this, &ModelResourceWatcher::resourceFinished); - disconnect(_resource.data(), &Resource::onRefresh, this, &ModelResourceWatcher::resourceRefreshed); +void GeometryResourceWatcher::stopWatching() { + disconnect(_resource.data(), &Resource::finished, this, &GeometryResourceWatcher::resourceFinished); + disconnect(_resource.data(), &Resource::onRefresh, this, &GeometryResourceWatcher::resourceRefreshed); } -void ModelResourceWatcher::setResource(ModelResource::Pointer resource) { +void GeometryResourceWatcher::setResource(GeometryResource::Pointer resource) { if (_resource) { stopWatching(); } @@ -525,14 +537,14 @@ void ModelResourceWatcher::setResource(ModelResource::Pointer resource) { } } -void ModelResourceWatcher::resourceFinished(bool success) { +void GeometryResourceWatcher::resourceFinished(bool success) { if (success) { - _networkModelRef = std::make_shared(*_resource); + _geometryRef = std::make_shared(*_resource); } emit finished(success); } -void ModelResourceWatcher::resourceRefreshed() { +void GeometryResourceWatcher::resourceRefreshed() { // FIXME: Model is not set up to handle a refresh // _instance.reset(); } diff --git a/libraries/model-networking/src/model-networking/ModelCache.h b/libraries/model-networking/src/model-networking/ModelCache.h index d61bd61696..615951345f 100644 --- a/libraries/model-networking/src/model-networking/ModelCache.h +++ b/libraries/model-networking/src/model-networking/ModelCache.h @@ -22,20 +22,23 @@ #include #include "ModelLoader.h" +class MeshPart; + using GeometryMappingPair = std::pair; Q_DECLARE_METATYPE(GeometryMappingPair) -class NetworkModel { +class Geometry { public: - using Pointer = std::shared_ptr; - using WeakPointer = std::weak_ptr; + using Pointer = std::shared_ptr; + using WeakPointer = std::weak_ptr; - NetworkModel() = default; - NetworkModel(const NetworkModel& geometry); - virtual ~NetworkModel() = default; + Geometry() = default; + Geometry(const Geometry& geometry); + virtual ~Geometry() = default; // Immutable over lifetime using GeometryMeshes = std::vector>; + using GeometryMeshParts = std::vector>; // Mutable, but must retain structure of vector using NetworkMaterials = std::vector>; @@ -60,6 +63,7 @@ protected: HFMModel::ConstPointer _hfmModel; MaterialMapping _materialMapping; std::shared_ptr _meshes; + std::shared_ptr _meshParts; // Copied to each geometry, mutable throughout lifetime via setTextures NetworkMaterials _materials; @@ -72,22 +76,22 @@ private: }; /// A geometry loaded from the network. -class ModelResource : public Resource, public NetworkModel { +class GeometryResource : public Resource, public Geometry { Q_OBJECT public: - using Pointer = QSharedPointer; + using Pointer = QSharedPointer; - ModelResource(const QUrl& url, const ModelLoader& modelLoader) : Resource(url), _modelLoader(modelLoader) {} - ModelResource(const ModelResource& other); + GeometryResource(const QUrl& url, const ModelLoader& modelLoader) : Resource(url), _modelLoader(modelLoader) {} + GeometryResource(const GeometryResource& other); - QString getType() const override { return "Model"; } + QString getType() const override { return "Geometry"; } virtual void deleter() override; virtual void downloadFinished(const QByteArray& data) override; void setExtra(void* extra) override; - virtual bool areTexturesLoaded() const override { return isLoaded() && NetworkModel::areTexturesLoaded(); } + virtual bool areTexturesLoaded() const override { return isLoaded() && Geometry::areTexturesLoaded(); } private slots: void onGeometryMappingLoaded(bool success); @@ -111,21 +115,21 @@ private: QUrl _textureBaseURL; bool _combineParts; - ModelResource::Pointer _modelResource; + GeometryResource::Pointer _geometryResource; QMetaObject::Connection _connection; bool _isCacheable{ true }; }; -class ModelResourceWatcher : public QObject { +class GeometryResourceWatcher : public QObject { Q_OBJECT public: - using Pointer = std::shared_ptr; + using Pointer = std::shared_ptr; - ModelResourceWatcher() = delete; - ModelResourceWatcher(NetworkModel::Pointer& geometryPtr) : _networkModelRef(geometryPtr) {} + GeometryResourceWatcher() = delete; + GeometryResourceWatcher(Geometry::Pointer& geometryPtr) : _geometryRef(geometryPtr) {} - void setResource(ModelResource::Pointer resource); + void setResource(GeometryResource::Pointer resource); QUrl getURL() const { return (bool)_resource ? _resource->getURL() : QUrl(); } int getResourceDownloadAttempts() { return _resource ? _resource->getDownloadAttempts() : 0; } @@ -143,8 +147,8 @@ private slots: void resourceRefreshed(); private: - ModelResource::Pointer _resource; - NetworkModel::Pointer& _networkModelRef; + GeometryResource::Pointer _resource; + Geometry::Pointer& _geometryRef; }; /// Stores cached model geometries. @@ -154,18 +158,18 @@ class ModelCache : public ResourceCache, public Dependency { public: - ModelResource::Pointer getModelResource(const QUrl& url, + GeometryResource::Pointer getGeometryResource(const QUrl& url, const GeometryMappingPair& mapping = GeometryMappingPair(QUrl(), QVariantHash()), const QUrl& textureBaseUrl = QUrl()); - ModelResource::Pointer getCollisionModelResource(const QUrl& url, + GeometryResource::Pointer getCollisionGeometryResource(const QUrl& url, const GeometryMappingPair& mapping = GeometryMappingPair(QUrl(), QVariantHash()), const QUrl& textureBaseUrl = QUrl()); protected: - friend class ModelResource; + friend class GeometryResource; virtual QSharedPointer createResource(const QUrl& url) override; QSharedPointer createResourceCopy(const QSharedPointer& resource) override; @@ -176,4 +180,12 @@ private: ModelLoader _modelLoader; }; +class MeshPart { +public: + MeshPart(int mesh, int part, int material) : meshID { mesh }, partID { part }, materialID { material } {} + int meshID { -1 }; + int partID { -1 }; + int materialID { -1 }; +}; + #endif // hifi_ModelCache_h diff --git a/libraries/physics/src/ShapeFactory.cpp b/libraries/physics/src/ShapeFactory.cpp index 43c6fc27dc..ef5213df8f 100644 --- a/libraries/physics/src/ShapeFactory.cpp +++ b/libraries/physics/src/ShapeFactory.cpp @@ -109,7 +109,7 @@ btConvexHullShape* createConvexHull(const ShapeInfo::PointList& points) { glm::vec3 center = points[0]; glm::vec3 maxCorner = center; glm::vec3 minCorner = center; - for (size_t i = 1; i < points.size(); i++) { + for (int i = 1; i < points.size(); i++) { center += points[i]; maxCorner = glm::max(maxCorner, points[i]); minCorner = glm::min(minCorner, points[i]); @@ -149,7 +149,7 @@ btConvexHullShape* createConvexHull(const ShapeInfo::PointList& points) { // add the points, correcting for margin glm::vec3 relativeScale = (diagonal - glm::vec3(2.0f * margin)) / diagonal; glm::vec3 correctedPoint; - for (size_t i = 0; i < points.size(); ++i) { + for (int i = 0; i < points.size(); ++i) { correctedPoint = (points[i] - center) * relativeScale + center; hull->addPoint(btVector3(correctedPoint[0], correctedPoint[1], correctedPoint[2]), false); } @@ -217,7 +217,7 @@ btTriangleIndexVertexArray* createStaticMeshArray(const ShapeInfo& info) { } const ShapeInfo::TriangleIndices& triangleIndices = info.getTriangleIndices(); - int32_t numIndices = (int32_t)triangleIndices.size(); + int32_t numIndices = triangleIndices.size(); if (numIndices < 3) { // not enough indices to make a single triangle return nullptr; @@ -237,7 +237,7 @@ btTriangleIndexVertexArray* createStaticMeshArray(const ShapeInfo& info) { mesh.m_indexType = PHY_INTEGER; mesh.m_triangleIndexStride = VERTICES_PER_TRIANGLE * sizeof(int32_t); } - mesh.m_numVertices = (int)pointList.size(); + mesh.m_numVertices = pointList.size(); mesh.m_vertexBase = new unsigned char[VERTICES_PER_TRIANGLE * sizeof(btScalar) * (size_t)mesh.m_numVertices]; mesh.m_vertexStride = VERTICES_PER_TRIANGLE * sizeof(btScalar); mesh.m_vertexType = PHY_FLOAT; @@ -362,7 +362,7 @@ const btCollisionShape* ShapeFactory::createShapeFromInfo(const ShapeInfo& info) const ShapeInfo::PointCollection& pointCollection = info.getPointCollection(); uint32_t numSubShapes = info.getNumSubShapes(); if (numSubShapes == 1) { - if (!pointCollection.empty()) { + if (!pointCollection.isEmpty()) { shape = createConvexHull(pointCollection[0]); } } else { @@ -380,7 +380,7 @@ const btCollisionShape* ShapeFactory::createShapeFromInfo(const ShapeInfo& info) case SHAPE_TYPE_SIMPLE_COMPOUND: { const ShapeInfo::PointCollection& pointCollection = info.getPointCollection(); const ShapeInfo::TriangleIndices& triangleIndices = info.getTriangleIndices(); - uint32_t numIndices = (uint32_t)triangleIndices.size(); + uint32_t numIndices = triangleIndices.size(); uint32_t numMeshes = info.getNumSubShapes(); const uint32_t MIN_NUM_SIMPLE_COMPOUND_INDICES = 2; // END_OF_MESH_PART + END_OF_MESH if (numMeshes > 0 && numIndices > MIN_NUM_SIMPLE_COMPOUND_INDICES) { diff --git a/libraries/procedural/src/procedural/ProceduralMaterialCache.h b/libraries/procedural/src/procedural/ProceduralMaterialCache.h index bf4b5191c2..0a44ccf0ef 100644 --- a/libraries/procedural/src/procedural/ProceduralMaterialCache.h +++ b/libraries/procedural/src/procedural/ProceduralMaterialCache.h @@ -50,7 +50,7 @@ public: Textures getTextures() { return _textures; } protected: - friend class NetworkModel; + friend class Geometry; Textures _textures; diff --git a/libraries/render-utils/src/CauterizedModel.cpp b/libraries/render-utils/src/CauterizedModel.cpp index bfa974f1e2..94b7661b2f 100644 --- a/libraries/render-utils/src/CauterizedModel.cpp +++ b/libraries/render-utils/src/CauterizedModel.cpp @@ -32,11 +32,16 @@ bool CauterizedModel::updateGeometry() { bool needsFullUpdate = Model::updateGeometry(); if (_isCauterized && needsFullUpdate) { assert(_cauterizeMeshStates.empty()); - - // initialize the cauterizedDeforemrStates as a copy of the standard deformerStates - _cauterizeMeshStates.resize(_meshStates.size()); - for (int i = 0; i < (int) _meshStates.size(); ++i) { - _cauterizeMeshStates[i] = _meshStates[i]; + const HFMModel& hfmModel = getHFMModel(); + foreach (const HFMMesh& mesh, hfmModel.meshes) { + Model::MeshState state; + if (_useDualQuaternionSkinning) { + state.clusterDualQuaternions.resize(mesh.clusters.size()); + _cauterizeMeshStates.append(state); + } else { + state.clusterMatrices.resize(mesh.clusters.size()); + _cauterizeMeshStates.append(state); + } } } return needsFullUpdate; @@ -45,12 +50,20 @@ bool CauterizedModel::updateGeometry() { void CauterizedModel::createRenderItemSet() { if (_isCauterized) { assert(isLoaded()); + const auto& meshes = _renderGeometry->getMeshes(); + + // all of our mesh vectors must match in size + if (meshes.size() != _meshStates.size()) { + qCDebug(renderutils) << "WARNING!!!! Mesh Sizes don't match! We will not segregate mesh groups yet."; + return; + } // We should not have any existing renderItems if we enter this section of code Q_ASSERT(_modelMeshRenderItems.isEmpty()); _modelMeshRenderItems.clear(); _modelMeshMaterialNames.clear(); + _modelMeshRenderItemShapes.clear(); Transform transform; transform.setTranslation(_translation); @@ -60,17 +73,25 @@ void CauterizedModel::createRenderItemSet() { offset.setScale(_scale); offset.postTranslate(_offset); - Transform::mult(transform, transform, offset); - // Run through all of the meshes, and place them into their segregated, but unsorted buckets - const auto& shapes = _renderGeometry->getHFMModel().shapes; - for (int shapeID = 0; shapeID < (int) shapes.size(); shapeID++) { - const auto& shape = shapes[shapeID]; + int shapeID = 0; + uint32_t numMeshes = (uint32_t)meshes.size(); + for (uint32_t i = 0; i < numMeshes; i++) { + const auto& mesh = meshes.at(i); + if (!mesh) { + continue; + } - _modelMeshRenderItems << std::make_shared(shared_from_this(), shape.mesh, shape.meshPart, shapeID, transform, offset, _created); - - auto material = getNetworkModel()->getShapeMaterial(shapeID); - _modelMeshMaterialNames.push_back(material ? material->getName() : ""); + // Create the render payloads + int numParts = (int)mesh->getNumParts(); + for (int partIndex = 0; partIndex < numParts; partIndex++) { + auto ptr = std::make_shared(shared_from_this(), i, partIndex, shapeID, transform, offset, _created); + _modelMeshRenderItems << std::static_pointer_cast(ptr); + auto material = getGeometry()->getShapeMaterial(shapeID); + _modelMeshMaterialNames.push_back(material ? material->getName() : ""); + _modelMeshRenderItemShapes.emplace_back(ShapeInfo{ (int)i }); + shapeID++; + } } } else { Model::createRenderItemSet(); @@ -83,26 +104,28 @@ void CauterizedModel::updateClusterMatrices() { if (!_needsUpdateClusterMatrices || !isLoaded()) { return; } - - updateShapeStatesFromRig(); - _needsUpdateClusterMatrices = false; + const HFMModel& hfmModel = getHFMModel(); - for (int skinDeformerIndex = 0; skinDeformerIndex < (int)_meshStates.size(); skinDeformerIndex++) { - MeshState& state = _meshStates[skinDeformerIndex]; - auto numClusters = state.getNumClusters(); - for (uint32_t clusterIndex = 0; clusterIndex < numClusters; clusterIndex++) { - const auto& cbmov = _rig.getAnimSkeleton()->getClusterBindMatricesOriginalValues(skinDeformerIndex, clusterIndex); + for (int i = 0; i < (int)_meshStates.size(); i++) { + Model::MeshState& state = _meshStates[i]; + const HFMMesh& mesh = hfmModel.meshes.at(i); + int meshIndex = i; + + for (int j = 0; j < mesh.clusters.size(); j++) { + const HFMCluster& cluster = mesh.clusters.at(j); + int clusterIndex = j; if (_useDualQuaternionSkinning) { - auto jointPose = _rig.getJointPose(cbmov.jointIndex); + auto jointPose = _rig.getJointPose(cluster.jointIndex); Transform jointTransform(jointPose.rot(), jointPose.scale(), jointPose.trans()); Transform clusterTransform; - Transform::mult(clusterTransform, jointTransform, cbmov.inverseBindTransform); - state.clusterDualQuaternions[clusterIndex] = Model::TransformDualQuaternion(clusterTransform); + Transform::mult(clusterTransform, jointTransform, _rig.getAnimSkeleton()->getClusterBindMatricesOriginalValues(meshIndex, clusterIndex).inverseBindTransform); + state.clusterDualQuaternions[j] = Model::TransformDualQuaternion(clusterTransform); + state.clusterDualQuaternions[j].setCauterizationParameters(0.0f, jointPose.trans()); } else { - auto jointMatrix = _rig.getJointTransform(cbmov.jointIndex); - glm_mat4u_mul(jointMatrix, cbmov.inverseBindMatrix, state.clusterMatrices[clusterIndex]); + auto jointMatrix = _rig.getJointTransform(cluster.jointIndex); + glm_mat4u_mul(jointMatrix, _rig.getAnimSkeleton()->getClusterBindMatricesOriginalValues(meshIndex, clusterIndex).inverseBindMatrix, state.clusterMatrices[j]); } } } @@ -112,7 +135,6 @@ void CauterizedModel::updateClusterMatrices() { AnimPose cauterizePose = _rig.getJointPose(_rig.indexOfJoint("Neck")); cauterizePose.scale() = glm::vec3(0.0001f, 0.0001f, 0.0001f); - Transform cauterizedDQTransform(cauterizePose.rot(), cauterizePose.scale(), cauterizePose.trans()); static const glm::mat4 zeroScale( glm::vec4(0.0001f, 0.0f, 0.0f, 0.0f), @@ -121,29 +143,32 @@ void CauterizedModel::updateClusterMatrices() { glm::vec4(0.0f, 0.0f, 0.0f, 1.0f)); auto cauterizeMatrix = _rig.getJointTransform(_rig.indexOfJoint("Neck")) * zeroScale; - for (int skinDeformerIndex = 0; skinDeformerIndex < (int) _cauterizeMeshStates.size(); skinDeformerIndex++) { - Model::MeshState& nonCauterizedState = _meshStates[skinDeformerIndex]; - Model::MeshState& state = _cauterizeMeshStates[skinDeformerIndex]; + for (int i = 0; i < _cauterizeMeshStates.size(); i++) { + Model::MeshState& state = _cauterizeMeshStates[i]; + const HFMMesh& mesh = hfmModel.meshes.at(i); + int meshIndex = i; - // Just reset cauterized state with normal state memcpy style - if (_useDualQuaternionSkinning) { - state.clusterDualQuaternions = nonCauterizedState.clusterDualQuaternions; - } else { - state.clusterMatrices = nonCauterizedState.clusterMatrices; - } - - // ANd only cauterize affected joints - auto numClusters = state.getNumClusters(); - for (uint32_t clusterIndex = 0; clusterIndex < numClusters; clusterIndex++) { - const auto& cbmov = _rig.getAnimSkeleton()->getClusterBindMatricesOriginalValues(skinDeformerIndex, clusterIndex); - if (_cauterizeBoneSet.find(cbmov.jointIndex) != _cauterizeBoneSet.end()) { - if (_useDualQuaternionSkinning) { - Transform clusterTransform; - Transform::mult(clusterTransform, cauterizedDQTransform, cbmov.inverseBindTransform); - state.clusterDualQuaternions[clusterIndex] = Model::TransformDualQuaternion(clusterTransform); - state.clusterDualQuaternions[clusterIndex].setCauterizationParameters(1.0f, cauterizePose.trans()); + for (int j = 0; j < mesh.clusters.size(); j++) { + const HFMCluster& cluster = mesh.clusters.at(j); + int clusterIndex = j; + + if (_useDualQuaternionSkinning) { + if (_cauterizeBoneSet.find(cluster.jointIndex) == _cauterizeBoneSet.end()) { + // not cauterized so just copy the value from the non-cauterized version. + state.clusterDualQuaternions[j] = _meshStates[i].clusterDualQuaternions[j]; } else { - glm_mat4u_mul(cauterizeMatrix, cbmov.inverseBindMatrix, state.clusterMatrices[clusterIndex]); + Transform jointTransform(cauterizePose.rot(), cauterizePose.scale(), cauterizePose.trans()); + Transform clusterTransform; + Transform::mult(clusterTransform, jointTransform, _rig.getAnimSkeleton()->getClusterBindMatricesOriginalValues(meshIndex, clusterIndex).inverseBindTransform); + state.clusterDualQuaternions[j] = Model::TransformDualQuaternion(clusterTransform); + state.clusterDualQuaternions[j].setCauterizationParameters(1.0f, cauterizePose.trans()); + } + } else { + if (_cauterizeBoneSet.find(cluster.jointIndex) == _cauterizeBoneSet.end()) { + // not cauterized so just copy the value from the non-cauterized version. + state.clusterMatrices[j] = _meshStates[i].clusterMatrices[j]; + } else { + glm_mat4u_mul(cauterizeMatrix, _rig.getAnimSkeleton()->getClusterBindMatricesOriginalValues(meshIndex, clusterIndex).inverseBindMatrix, state.clusterMatrices[j]); } } } @@ -187,60 +212,65 @@ void CauterizedModel::updateRenderItems() { render::Transaction transaction; for (int i = 0; i < (int)self->_modelMeshRenderItemIDs.size(); i++) { + auto itemID = self->_modelMeshRenderItemIDs[i]; + auto meshIndex = self->_modelMeshRenderItemShapes[i].meshIndex; - const auto& shapeState = self->getShapeState(i); + const auto& meshState = self->getMeshState(meshIndex); + const auto& cauterizedMeshState = self->getCauterizeMeshState(meshIndex); - auto skinDeformerIndex = shapeState._skinDeformerIndex; - - bool invalidatePayloadShapeKey = self->shouldInvalidatePayloadShapeKey(shapeState._meshIndex); + bool invalidatePayloadShapeKey = self->shouldInvalidatePayloadShapeKey(meshIndex); bool useDualQuaternionSkinning = self->getUseDualQuaternionSkinning(); - if (skinDeformerIndex != hfm::UNDEFINED_KEY) { + transaction.updateItem(itemID, [modelTransform, meshState, useDualQuaternionSkinning, cauterizedMeshState, invalidatePayloadShapeKey, + primitiveMode, renderItemKeyGlobalFlags, enableCauterization](ModelMeshPartPayload& mmppData) { + CauterizedMeshPartPayload& data = static_cast(mmppData); + if (useDualQuaternionSkinning) { + data.updateClusterBuffer(meshState.clusterDualQuaternions, + cauterizedMeshState.clusterDualQuaternions); + data.computeAdjustedLocalBound(meshState.clusterDualQuaternions); + } else { + data.updateClusterBuffer(meshState.clusterMatrices, + cauterizedMeshState.clusterMatrices); + data.computeAdjustedLocalBound(meshState.clusterMatrices); + } - const auto& meshState = self->getMeshState(skinDeformerIndex); - const auto& cauterizedMeshState = self->getCauterizeMeshState(skinDeformerIndex); - - transaction.updateItem(itemID, - [modelTransform, shapeState, meshState, useDualQuaternionSkinning, cauterizedMeshState, invalidatePayloadShapeKey, - primitiveMode, renderItemKeyGlobalFlags, enableCauterization](ModelMeshPartPayload& mmppData) { - CauterizedMeshPartPayload& data = static_cast(mmppData); - if (useDualQuaternionSkinning) { - data.updateClusterBuffer(meshState.clusterDualQuaternions, cauterizedMeshState.clusterDualQuaternions); - } else { - data.updateClusterBuffer(meshState.clusterMatrices, cauterizedMeshState.clusterMatrices); + Transform renderTransform = modelTransform; + if (useDualQuaternionSkinning) { + if (meshState.clusterDualQuaternions.size() == 1 || meshState.clusterDualQuaternions.size() == 2) { + const auto& dq = meshState.clusterDualQuaternions[0]; + Transform transform(dq.getRotation(), + dq.getScale(), + dq.getTranslation()); + renderTransform = modelTransform.worldTransform(transform); } + } else { + if (meshState.clusterMatrices.size() == 1 || meshState.clusterMatrices.size() == 2) { + renderTransform = modelTransform.worldTransform(Transform(meshState.clusterMatrices[0])); + } + } + data.updateTransformForSkinnedMesh(renderTransform, modelTransform); - Transform renderTransform = modelTransform; - // if (meshState.clusterMatrices.size() <= 2) { - // renderTransform = modelTransform.worldTransform(shapeState._rootFromJointTransform); - // } - data.updateTransform(renderTransform); - data.updateTransformForCauterizedMesh(renderTransform); - data.updateTransformAndBound(modelTransform.worldTransform(shapeState._rootFromJointTransform)); + renderTransform = modelTransform; + if (useDualQuaternionSkinning) { + if (cauterizedMeshState.clusterDualQuaternions.size() == 1 || cauterizedMeshState.clusterDualQuaternions.size() == 2) { + const auto& dq = cauterizedMeshState.clusterDualQuaternions[0]; + Transform transform(dq.getRotation(), + dq.getScale(), + dq.getTranslation()); + renderTransform = modelTransform.worldTransform(Transform(transform)); + } + } else { + if (cauterizedMeshState.clusterMatrices.size() == 1 || cauterizedMeshState.clusterMatrices.size() == 2) { + renderTransform = modelTransform.worldTransform(Transform(cauterizedMeshState.clusterMatrices[0])); + } + } + data.updateTransformForCauterizedMesh(renderTransform); - data.setEnableCauterization(enableCauterization); - data.updateKey(renderItemKeyGlobalFlags); - data.setShapeKey(invalidatePayloadShapeKey, primitiveMode, useDualQuaternionSkinning); - }); - } else { - transaction.updateItem(itemID, - [modelTransform, shapeState, invalidatePayloadShapeKey, primitiveMode, renderItemKeyGlobalFlags, enableCauterization] - (ModelMeshPartPayload& mmppData) { - CauterizedMeshPartPayload& data = static_cast(mmppData); - - Transform renderTransform = modelTransform; - - renderTransform = modelTransform.worldTransform(shapeState._rootFromJointTransform); - data.updateTransform(renderTransform); - data.updateTransformForCauterizedMesh(renderTransform); - - data.setEnableCauterization(enableCauterization); - data.updateKey(renderItemKeyGlobalFlags); - data.setShapeKey(invalidatePayloadShapeKey, primitiveMode, false); - }); - - } + data.setEnableCauterization(enableCauterization); + data.updateKey(renderItemKeyGlobalFlags); + data.setShapeKey(invalidatePayloadShapeKey, primitiveMode, useDualQuaternionSkinning); + }); } scene->enqueueTransaction(transaction); diff --git a/libraries/render-utils/src/CauterizedModel.h b/libraries/render-utils/src/CauterizedModel.h index 7d241d7ac6..36a96fb006 100644 --- a/libraries/render-utils/src/CauterizedModel.h +++ b/libraries/render-utils/src/CauterizedModel.h @@ -40,7 +40,7 @@ public: protected: std::unordered_set _cauterizeBoneSet; - std::vector _cauterizeMeshStates; + QVector _cauterizeMeshStates; bool _isCauterized { false }; bool _enableCauterization { false }; }; diff --git a/libraries/render-utils/src/GeometryCache.cpp b/libraries/render-utils/src/GeometryCache.cpp index e0d23535e4..ea66ac19ec 100644 --- a/libraries/render-utils/src/GeometryCache.cpp +++ b/libraries/render-utils/src/GeometryCache.cpp @@ -116,7 +116,7 @@ static const uint SHAPE_TANGENT_OFFSET = offsetof(GeometryCache::ShapeVertex, ta std::map, gpu::PipelinePointer> GeometryCache::_webPipelines; std::map, gpu::PipelinePointer> GeometryCache::_gridPipelines; -void GeometryCache::computeSimpleHullPointListForShape(const int entityShape, const glm::vec3 &entityExtents, ShapeInfo::PointList &outPointList) { +void GeometryCache::computeSimpleHullPointListForShape(const int entityShape, const glm::vec3 &entityExtents, QVector &outPointList) { auto geometryCache = DependencyManager::get(); const GeometryCache::Shape geometryShape = GeometryCache::getShapeForEntityShape( entityShape ); diff --git a/libraries/render-utils/src/GeometryCache.h b/libraries/render-utils/src/GeometryCache.h index 03865c6cc7..179d49c076 100644 --- a/libraries/render-utils/src/GeometryCache.h +++ b/libraries/render-utils/src/GeometryCache.h @@ -155,7 +155,7 @@ public: static GeometryCache::Shape getShapeForEntityShape(int entityShapeEnum); static QString stringFromShape(GeometryCache::Shape geoShape); - static void computeSimpleHullPointListForShape(int entityShape, const glm::vec3 &entityExtents, ShapeInfo::PointList &outPointList); + static void computeSimpleHullPointListForShape(int entityShape, const glm::vec3 &entityExtents, QVector &outPointList); int allocateID() { return _nextID++; } void releaseID(int id); diff --git a/libraries/render-utils/src/MeshPartPayload.cpp b/libraries/render-utils/src/MeshPartPayload.cpp index 2ae6c5de8b..d150e18406 100644 --- a/libraries/render-utils/src/MeshPartPayload.cpp +++ b/libraries/render-utils/src/MeshPartPayload.cpp @@ -81,15 +81,11 @@ void MeshPartPayload::updateMeshPart(const std::shared_ptr } } -void MeshPartPayload::updateTransform(const Transform& transform) { - _worldFromLocalTransform = transform; +void MeshPartPayload::updateTransform(const Transform& transform, const Transform& offsetTransform) { + _transform = transform; + Transform::mult(_drawTransform, _transform, offsetTransform); _worldBound = _localBound; - _worldBound.transform(_worldFromLocalTransform); -} - -void MeshPartPayload::updateTransformAndBound(const Transform& transform) { - _worldBound = _localBound; - _worldBound.transform(transform); + _worldBound.transform(_drawTransform); } void MeshPartPayload::addMaterial(graphics::MaterialLayer material) { @@ -179,7 +175,7 @@ void MeshPartPayload::bindMesh(gpu::Batch& batch) { } void MeshPartPayload::bindTransform(gpu::Batch& batch, RenderArgs::RenderMode renderMode) const { - batch.setModelTransform(_worldFromLocalTransform); + batch.setModelTransform(_drawTransform); } bool MeshPartPayload::passesZoneOcclusionTest(const std::unordered_set& containingZones) const { @@ -220,7 +216,7 @@ void MeshPartPayload::render(RenderArgs* args) { auto& schema = _drawMaterials.getSchemaBuffer().get(); glm::vec4 outColor = glm::vec4(ColorUtils::tosRGBVec3(schema._albedo), schema._opacity); outColor = procedural->getColor(outColor); - procedural->prepare(batch, _worldFromLocalTransform.getTranslation(), _worldFromLocalTransform.getScale(), _worldFromLocalTransform.getRotation(), _created, + procedural->prepare(batch, _drawTransform.getTranslation(), _drawTransform.getScale(), _drawTransform.getRotation(), _created, ProceduralProgramKey(outColor.a < 1.0f)); batch._glColor4f(outColor.r, outColor.g, outColor.b, outColor.a); } else { @@ -281,21 +277,36 @@ ModelMeshPartPayload::ModelMeshPartPayload(ModelPointer model, int meshIndex, in assert(model && model->isLoaded()); - auto shape = model->getHFMModel().shapes[shapeIndex]; - assert(shape.mesh == meshIndex); - assert(shape.meshPart == partIndex); + bool useDualQuaternionSkinning = model->getUseDualQuaternionSkinning(); - auto& modelMesh = model->getNetworkModel()->getMeshes().at(_meshIndex); + auto& modelMesh = model->getGeometry()->getMeshes().at(_meshIndex); _meshNumVertices = (int)modelMesh->getNumVertices(); + const Model::MeshState& state = model->getMeshState(_meshIndex); updateMeshPart(modelMesh, partIndex); - Transform renderTransform = transform; - const Model::ShapeState& shapeState = model->getShapeState(shapeIndex); - renderTransform = transform.worldTransform(shapeState._rootFromJointTransform); - updateTransform(renderTransform); + if (useDualQuaternionSkinning) { + computeAdjustedLocalBound(state.clusterDualQuaternions); + } else { + computeAdjustedLocalBound(state.clusterMatrices); + } - _deformerIndex = shape.skinDeformer; + updateTransform(transform, offsetTransform); + Transform renderTransform = transform; + if (useDualQuaternionSkinning) { + if (state.clusterDualQuaternions.size() == 1) { + const auto& dq = state.clusterDualQuaternions[0]; + Transform transform(dq.getRotation(), + dq.getScale(), + dq.getTranslation()); + renderTransform = transform.worldTransform(Transform(transform)); + } + } else { + if (state.clusterMatrices.size() == 1) { + renderTransform = transform.worldTransform(Transform(state.clusterMatrices[0])); + } + } + updateTransformForSkinnedMesh(renderTransform, transform); initCache(model); @@ -319,9 +330,7 @@ void ModelMeshPartPayload::initCache(const ModelPointer& model) { if (_drawMesh) { auto vertexFormat = _drawMesh->getVertexFormat(); _hasColorAttrib = vertexFormat->hasAttribute(gpu::Stream::COLOR); - if (_deformerIndex != hfm::UNDEFINED_KEY) { - _isSkinned = vertexFormat->hasAttribute(gpu::Stream::SKIN_CLUSTER_WEIGHT) && vertexFormat->hasAttribute(gpu::Stream::SKIN_CLUSTER_INDEX); - } + _isSkinned = vertexFormat->hasAttribute(gpu::Stream::SKIN_CLUSTER_WEIGHT) && vertexFormat->hasAttribute(gpu::Stream::SKIN_CLUSTER_INDEX); const HFMModel& hfmModel = model->getHFMModel(); const HFMMesh& mesh = hfmModel.meshes.at(_meshIndex); @@ -330,7 +339,7 @@ void ModelMeshPartPayload::initCache(const ModelPointer& model) { _hasTangents = !mesh.tangents.isEmpty(); } - auto networkMaterial = model->getNetworkModel()->getShapeMaterial(_shapeID); + auto networkMaterial = model->getGeometry()->getShapeMaterial(_shapeID); if (networkMaterial) { addMaterial(graphics::MaterialLayer(networkMaterial, 0)); } @@ -380,6 +389,12 @@ void ModelMeshPartPayload::updateClusterBuffer(const std::vector(); glm::vec4 outColor = glm::vec4(ColorUtils::tosRGBVec3(schema._albedo), schema._opacity); outColor = procedural->getColor(outColor); - procedural->prepare(batch, _worldFromLocalTransform.getTranslation(), _worldFromLocalTransform.getScale(), _worldFromLocalTransform.getRotation(), _created, + procedural->prepare(batch, _drawTransform.getTranslation(), _drawTransform.getScale(), _drawTransform.getRotation(), _created, ProceduralProgramKey(outColor.a < 1.0f, _shapeKey.isDeformed(), _shapeKey.isDualQuatSkinned())); batch._glColor4f(outColor.r, outColor.g, outColor.b, outColor.a); } else { @@ -534,6 +549,38 @@ void ModelMeshPartPayload::render(RenderArgs* args) { args->_details._trianglesRendered += _drawPart._numIndices / INDICES_PER_TRIANGLE; } +void ModelMeshPartPayload::computeAdjustedLocalBound(const std::vector& clusterMatrices) { + _adjustedLocalBound = _localBound; + if (clusterMatrices.size() > 0) { + _adjustedLocalBound.transform(clusterMatrices.back()); + + for (int i = 0; i < (int)clusterMatrices.size() - 1; ++i) { + AABox clusterBound = _localBound; + clusterBound.transform(clusterMatrices[i]); + _adjustedLocalBound += clusterBound; + } + } +} + +void ModelMeshPartPayload::computeAdjustedLocalBound(const std::vector& clusterDualQuaternions) { + _adjustedLocalBound = _localBound; + if (clusterDualQuaternions.size() > 0) { + Transform rootTransform(clusterDualQuaternions.back().getRotation(), + clusterDualQuaternions.back().getScale(), + clusterDualQuaternions.back().getTranslation()); + _adjustedLocalBound.transform(rootTransform); + + for (int i = 0; i < (int)clusterDualQuaternions.size() - 1; ++i) { + AABox clusterBound = _localBound; + Transform transform(clusterDualQuaternions[i].getRotation(), + clusterDualQuaternions[i].getScale(), + clusterDualQuaternions[i].getTranslation()); + clusterBound.transform(transform); + _adjustedLocalBound += clusterBound; + } + } +} + void ModelMeshPartPayload::setBlendshapeBuffer(const std::unordered_map& blendshapeBuffers, const QVector& blendedMeshSizes) { if (_meshIndex < blendedMeshSizes.length() && blendedMeshSizes.at(_meshIndex) == _meshNumVertices) { auto blendshapeBuffer = blendshapeBuffers.find(_meshIndex); diff --git a/libraries/render-utils/src/MeshPartPayload.h b/libraries/render-utils/src/MeshPartPayload.h index be6a0e97f4..8ed799bd74 100644 --- a/libraries/render-utils/src/MeshPartPayload.h +++ b/libraries/render-utils/src/MeshPartPayload.h @@ -38,8 +38,7 @@ public: virtual void updateMeshPart(const std::shared_ptr& drawMesh, int partIndex); virtual void notifyLocationChanged() {} - void updateTransform(const Transform& transform); - void updateTransformAndBound(const Transform& transform ); + void updateTransform(const Transform& transform, const Transform& offsetTransform); // Render Item interface virtual render::ItemKey getKey() const; @@ -53,11 +52,13 @@ public: virtual void bindTransform(gpu::Batch& batch, RenderArgs::RenderMode renderMode) const; // Payload resource cached values - Transform _worldFromLocalTransform; + Transform _drawTransform; + Transform _transform; int _partIndex = 0; bool _hasColorAttrib { false }; graphics::Box _localBound; + graphics::Box _adjustedLocalBound; mutable graphics::Box _worldBound; std::shared_ptr _drawMesh; @@ -110,6 +111,7 @@ public: // dual quaternion skinning void updateClusterBuffer(const std::vector& clusterDualQuaternions); + void updateTransformForSkinnedMesh(const Transform& renderTransform, const Transform& boundTransform); // Render Item interface render::ShapeKey getShapeKey() const override; @@ -122,6 +124,12 @@ public: void bindMesh(gpu::Batch& batch) override; void bindTransform(gpu::Batch& batch, RenderArgs::RenderMode renderMode) const override; + // matrix palette skinning + void computeAdjustedLocalBound(const std::vector& clusterMatrices); + + // dual quaternion skinning + void computeAdjustedLocalBound(const std::vector& clusterDualQuaternions); + gpu::BufferPointer _clusterBuffer; enum class ClusterBufferType { Matrices, DualQuaternions }; @@ -129,7 +137,6 @@ public: int _meshIndex; int _shapeID; - uint32_t _deformerIndex; bool _isSkinned{ false }; bool _isBlendShaped { false }; diff --git a/libraries/render-utils/src/Model.cpp b/libraries/render-utils/src/Model.cpp index d0d878e294..3776c4e199 100644 --- a/libraries/render-utils/src/Model.cpp +++ b/libraries/render-utils/src/Model.cpp @@ -44,7 +44,7 @@ using namespace std; int nakedModelPointerTypeId = qRegisterMetaType(); -int weakGeometryResourceBridgePointerTypeId = qRegisterMetaType(); +int weakGeometryResourceBridgePointerTypeId = qRegisterMetaType(); int vec3VectorTypeId = qRegisterMetaType>(); int normalTypeVecTypeId = qRegisterMetaType>("QVector"); float Model::FAKE_DIMENSION_PLACEHOLDER = -1.0f; @@ -74,7 +74,7 @@ Model::Model(QObject* parent, SpatiallyNestable* spatiallyNestableOverride, uint setSnapModelToRegistrationPoint(true, glm::vec3(0.5f)); - connect(&_renderWatcher, &ModelResourceWatcher::finished, this, &Model::loadURLFinished); + connect(&_renderWatcher, &GeometryResourceWatcher::finished, this, &Model::loadURLFinished); } Model::~Model() { @@ -154,7 +154,7 @@ void Model::setOffset(const glm::vec3& offset) { } void Model::calculateTextureInfo() { - if (!_hasCalculatedTextureInfo && isLoaded() && getNetworkModel()->areTexturesLoaded() && !_modelMeshRenderItems.isEmpty()) { + if (!_hasCalculatedTextureInfo && isLoaded() && getGeometry()->areTexturesLoaded() && !_modelMeshRenderItems.isEmpty()) { size_t textureSize = 0; int textureCount = 0; bool allTexturesLoaded = true; @@ -181,15 +181,15 @@ int Model::getRenderInfoTextureCount() { } bool Model::shouldInvalidatePayloadShapeKey(int meshIndex) { - if (!getNetworkModel()) { + if (!getGeometry()) { return true; } const HFMModel& hfmModel = getHFMModel(); - const auto& networkMeshes = getNetworkModel()->getMeshes(); + const auto& networkMeshes = getGeometry()->getMeshes(); // if our index is ever out of range for either meshes or networkMeshes, then skip it, and set our _meshGroupsKnown // to false to rebuild out mesh groups. - if (meshIndex < 0 || meshIndex >= (int)networkMeshes.size() || meshIndex >= (int)hfmModel.meshes.size()) { + if (meshIndex < 0 || meshIndex >= (int)networkMeshes.size() || meshIndex >= (int)hfmModel.meshes.size() || meshIndex >= (int)_meshStates.size()) { _needsFixupInScene = true; // trigger remove/add cycle invalidCalculatedMeshBoxes(); // if we have to reload, we need to assume our mesh boxes are all invalid return true; @@ -231,45 +231,46 @@ void Model::updateRenderItems() { render::Transaction transaction; for (int i = 0; i < (int) self->_modelMeshRenderItemIDs.size(); i++) { + auto itemID = self->_modelMeshRenderItemIDs[i]; + auto meshIndex = self->_modelMeshRenderItemShapes[i].meshIndex; - const auto& shapeState = self->getShapeState(i); + const auto& meshState = self->getMeshState(meshIndex); - auto skinDeformerIndex = shapeState._skinDeformerIndex; + bool invalidatePayloadShapeKey = self->shouldInvalidatePayloadShapeKey(meshIndex); + bool useDualQuaternionSkinning = self->getUseDualQuaternionSkinning(); - bool invalidatePayloadShapeKey = self->shouldInvalidatePayloadShapeKey(shapeState._meshIndex); + transaction.updateItem(itemID, [modelTransform, meshState, useDualQuaternionSkinning, + invalidatePayloadShapeKey, primitiveMode, renderItemKeyGlobalFlags, cauterized](ModelMeshPartPayload& data) { + if (useDualQuaternionSkinning) { + data.updateClusterBuffer(meshState.clusterDualQuaternions); + data.computeAdjustedLocalBound(meshState.clusterDualQuaternions); + } else { + data.updateClusterBuffer(meshState.clusterMatrices); + data.computeAdjustedLocalBound(meshState.clusterMatrices); + } - if (skinDeformerIndex != hfm::UNDEFINED_KEY) { - const auto& meshState = self->getMeshState(skinDeformerIndex); - bool useDualQuaternionSkinning = self->getUseDualQuaternionSkinning(); + Transform renderTransform = modelTransform; - transaction.updateItem(itemID, [modelTransform, shapeState, meshState, useDualQuaternionSkinning, - invalidatePayloadShapeKey, primitiveMode, renderItemKeyGlobalFlags, cauterized](ModelMeshPartPayload& data) { - if (useDualQuaternionSkinning) { - data.updateClusterBuffer(meshState.clusterDualQuaternions); - } else { - data.updateClusterBuffer(meshState.clusterMatrices); + if (useDualQuaternionSkinning) { + if (meshState.clusterDualQuaternions.size() == 1 || meshState.clusterDualQuaternions.size() == 2) { + const auto& dq = meshState.clusterDualQuaternions[0]; + Transform transform(dq.getRotation(), + dq.getScale(), + dq.getTranslation()); + renderTransform = modelTransform.worldTransform(Transform(transform)); } + } else { + if (meshState.clusterMatrices.size() == 1 || meshState.clusterMatrices.size() == 2) { + renderTransform = modelTransform.worldTransform(Transform(meshState.clusterMatrices[0])); + } + } + data.updateTransformForSkinnedMesh(renderTransform, modelTransform); - Transform renderTransform = modelTransform; - data.updateTransform(renderTransform); - data.updateTransformAndBound(modelTransform.worldTransform(shapeState._rootFromJointTransform)); - - data.setCauterized(cauterized); - data.updateKey(renderItemKeyGlobalFlags); - data.setShapeKey(invalidatePayloadShapeKey, primitiveMode, useDualQuaternionSkinning); - }); - } else { - transaction.updateItem(itemID, [modelTransform, shapeState, invalidatePayloadShapeKey, primitiveMode, renderItemKeyGlobalFlags](ModelMeshPartPayload& data) { - - Transform renderTransform = modelTransform; - renderTransform = modelTransform.worldTransform(shapeState._rootFromJointTransform); - data.updateTransform(renderTransform); - - data.updateKey(renderItemKeyGlobalFlags); - data.setShapeKey(invalidatePayloadShapeKey, primitiveMode, false); - }); - } + data.setCauterized(cauterized); + data.updateKey(renderItemKeyGlobalFlags); + data.setShapeKey(invalidatePayloadShapeKey, primitiveMode, useDualQuaternionSkinning); + }); } AbstractViewStateInterface::instance()->getMain3DScene()->enqueueTransaction(transaction); @@ -295,15 +296,6 @@ void Model::reset() { } } -void Model::updateShapeStatesFromRig() { - for (auto& shape : _shapeStates) { - uint32_t jointId = shape._jointIndex; - if (jointId < (uint32_t) _rig.getJointStateCount()) { - shape._rootFromJointTransform = _rig.getJointTransform(jointId); - } - } -} - bool Model::updateGeometry() { bool needFullUpdate = false; @@ -319,27 +311,14 @@ bool Model::updateGeometry() { assert(_meshStates.empty()); const HFMModel& hfmModel = getHFMModel(); - - const auto& shapes = hfmModel.shapes; - _shapeStates.resize(shapes.size()); - for (uint32_t s = 0; s < (uint32_t) shapes.size(); ++s) { - auto& shapeState = _shapeStates[s]; - shapeState._jointIndex = shapes[s].joint; - shapeState._meshIndex = shapes[s].mesh; - shapeState._meshPartIndex = shapes[s].meshPart; - shapeState._skinDeformerIndex = shapes[s].skinDeformer; - } - updateShapeStatesFromRig(); - - const auto& hfmSkinDeformers = hfmModel.skinDeformers; - for (uint32_t i = 0; i < (uint32_t) hfmSkinDeformers.size(); i++) { - const auto& dynT = hfmSkinDeformers[i]; + int i = 0; + foreach (const HFMMesh& mesh, hfmModel.meshes) { MeshState state; - state.clusterDualQuaternions.resize(dynT.clusters.size()); - state.clusterMatrices.resize(dynT.clusters.size()); + state.clusterDualQuaternions.resize(mesh.clusters.size()); + state.clusterMatrices.resize(mesh.clusters.size()); _meshStates.push_back(state); + i++; } - needFullUpdate = true; emit rigReady(); } @@ -667,8 +646,8 @@ glm::mat4 Model::getWorldToHFMMatrix() const { // TODO: deprecate and remove MeshProxyList Model::getMeshes() const { MeshProxyList result; - const NetworkModel::Pointer& renderGeometry = getNetworkModel(); - const NetworkModel::GeometryMeshes& meshes = renderGeometry->getMeshes(); + const Geometry::Pointer& renderGeometry = getGeometry(); + const Geometry::GeometryMeshes& meshes = renderGeometry->getMeshes(); if (!isLoaded()) { return result; @@ -737,9 +716,9 @@ bool Model::replaceScriptableModelMeshPart(scriptable::ScriptableModelBasePointe render::Transaction transaction; for (int i = 0; i < (int) _modelMeshRenderItemIDs.size(); i++) { auto itemID = _modelMeshRenderItemIDs[i]; - auto& shape = _shapeStates[i]; + auto shape = _modelMeshRenderItemShapes[i]; // TODO: check to see if .partIndex matches too - if (shape._meshIndex == (uint32_t) meshIndex) { + if (shape.meshIndex == meshIndex) { transaction.updateItem(itemID, [=](ModelMeshPartPayload& data) { data.updateMeshPart(mesh, partIndex); }); @@ -758,7 +737,7 @@ bool Model::replaceScriptableModelMeshPart(scriptable::ScriptableModelBasePointe for (int partID = 0; partID < numParts; partID++) { HFMMeshPart part; part.triangleIndices = buffer_helpers::bufferToVector(mesh._mesh->getIndexBuffer(), "part.triangleIndices"); - mesh.parts.push_back(part); + mesh.parts << part; } { foreach (const glm::vec3& vertex, mesh.vertices) { @@ -769,7 +748,7 @@ bool Model::replaceScriptableModelMeshPart(scriptable::ScriptableModelBasePointe mesh.meshExtents.maximum = glm::max(mesh.meshExtents.maximum, transformedVertex); } } - hfmModel.meshes.push_back(mesh); + hfmModel.meshes << mesh; } calculateTriangleSets(hfmModel); } @@ -786,9 +765,9 @@ scriptable::ScriptableModelBase Model::getScriptableModel() { } const HFMModel& hfmModel = getHFMModel(); - uint32_t numberOfMeshes = (uint32_t)hfmModel.meshes.size(); + int numberOfMeshes = hfmModel.meshes.size(); int shapeID = 0; - for (uint32_t i = 0; i < numberOfMeshes; i++) { + for (int i = 0; i < numberOfMeshes; i++) { const HFMMesh& hfmMesh = hfmModel.meshes.at(i); if (auto mesh = hfmMesh._mesh) { result.append(mesh); @@ -796,7 +775,7 @@ scriptable::ScriptableModelBase Model::getScriptableModel() { int numParts = (int)mesh->getNumParts(); for (int partIndex = 0; partIndex < numParts; partIndex++) { auto& materialName = _modelMeshMaterialNames[shapeID]; - result.appendMaterial(graphics::MaterialLayer(getNetworkModel()->getShapeMaterial(shapeID), 0), shapeID, materialName); + result.appendMaterial(graphics::MaterialLayer(getGeometry()->getShapeMaterial(shapeID), 0), shapeID, materialName); { std::unique_lock lock(_materialMappingMutex); @@ -819,69 +798,77 @@ scriptable::ScriptableModelBase Model::getScriptableModel() { void Model::calculateTriangleSets(const HFMModel& hfmModel) { PROFILE_RANGE(render, __FUNCTION__); - uint32_t meshInstanceCount = 0; - uint32_t lastMeshForInstanceCount = hfm::UNDEFINED_KEY; - for (const auto& shape : hfmModel.shapes) { - if (shape.mesh != lastMeshForInstanceCount) { - ++meshInstanceCount; - } - lastMeshForInstanceCount = shape.mesh; - } + int numberOfMeshes = hfmModel.meshes.size(); _triangleSetsValid = true; _modelSpaceMeshTriangleSets.clear(); - _modelSpaceMeshTriangleSets.reserve(meshInstanceCount); + _modelSpaceMeshTriangleSets.resize(numberOfMeshes); - uint32_t lastMeshForTriangleBuilding = hfm::UNDEFINED_KEY; - glm::mat4 lastTransformForTriangleBuilding { 0 }; - std::vector transformedPoints; - for (const auto& shape : hfmModel.shapes) { - const uint32_t meshIndex = shape.mesh; - const hfm::Mesh& mesh = hfmModel.meshes.at(meshIndex); - const auto& triangleListMesh = mesh.triangleListMesh; - const glm::vec2 part = triangleListMesh.parts[shape.meshPart]; - glm::mat4 worldFromMeshTransform; - if (shape.joint != hfm::UNDEFINED_KEY) { - // globalTransform includes hfmModel.offset, - // which includes the scaling, rotation, and translation specified by the FST, - // and the scaling from the unit conversion in FBX. - // This can't change at runtime, so we can safely store these in our TriangleSet. - worldFromMeshTransform = hfmModel.joints[shape.joint].globalTransform; - } + for (int i = 0; i < numberOfMeshes; i++) { + const HFMMesh& mesh = hfmModel.meshes.at(i); - if (meshIndex != lastMeshForTriangleBuilding || worldFromMeshTransform != lastTransformForTriangleBuilding) { - lastMeshForTriangleBuilding = meshIndex; - lastTransformForTriangleBuilding = worldFromMeshTransform; - _modelSpaceMeshTriangleSets.emplace_back(); - _modelSpaceMeshTriangleSets.back().reserve(mesh.parts.size()); + const int numberOfParts = mesh.parts.size(); + auto& meshTriangleSets = _modelSpaceMeshTriangleSets[i]; + meshTriangleSets.resize(numberOfParts); - transformedPoints = triangleListMesh.vertices; - if (worldFromMeshTransform != glm::mat4()) { - for (auto& point : transformedPoints) { - point = glm::vec3(worldFromMeshTransform * glm::vec4(point, 1.0f)); + for (int j = 0; j < numberOfParts; j++) { + const HFMMeshPart& part = mesh.parts.at(j); + + auto& partTriangleSet = meshTriangleSets[j]; + + const int INDICES_PER_TRIANGLE = 3; + const int INDICES_PER_QUAD = 4; + const int TRIANGLES_PER_QUAD = 2; + + // tell our triangleSet how many triangles to expect. + int numberOfQuads = part.quadIndices.size() / INDICES_PER_QUAD; + int numberOfTris = part.triangleIndices.size() / INDICES_PER_TRIANGLE; + int totalTriangles = (numberOfQuads * TRIANGLES_PER_QUAD) + numberOfTris; + partTriangleSet.reserve(totalTriangles); + + auto meshTransform = hfmModel.offset * mesh.modelTransform; + + if (part.quadIndices.size() > 0) { + int vIndex = 0; + for (int q = 0; q < numberOfQuads; q++) { + int i0 = part.quadIndices[vIndex++]; + int i1 = part.quadIndices[vIndex++]; + int i2 = part.quadIndices[vIndex++]; + int i3 = part.quadIndices[vIndex++]; + + // track the model space version... these points will be transformed by the FST's offset, + // which includes the scaling, rotation, and translation specified by the FST/FBX, + // this can't change at runtime, so we can safely store these in our TriangleSet + glm::vec3 v0 = glm::vec3(meshTransform * glm::vec4(mesh.vertices[i0], 1.0f)); + glm::vec3 v1 = glm::vec3(meshTransform * glm::vec4(mesh.vertices[i1], 1.0f)); + glm::vec3 v2 = glm::vec3(meshTransform * glm::vec4(mesh.vertices[i2], 1.0f)); + glm::vec3 v3 = glm::vec3(meshTransform * glm::vec4(mesh.vertices[i3], 1.0f)); + + Triangle tri1 = { v0, v1, v3 }; + Triangle tri2 = { v1, v2, v3 }; + partTriangleSet.insert(tri1); + partTriangleSet.insert(tri2); } } - } - auto& meshTriangleSets = _modelSpaceMeshTriangleSets.back(); - meshTriangleSets.emplace_back(); - auto& partTriangleSet = meshTriangleSets.back(); - const static size_t INDICES_PER_TRIANGLE = 3; - const size_t triangleCount = (size_t)(part.y) / INDICES_PER_TRIANGLE; - partTriangleSet.reserve(triangleCount); - const size_t indexStart = (uint32_t)part.x; - const size_t indexEnd = indexStart + (triangleCount * INDICES_PER_TRIANGLE); - for (size_t i = indexStart; i < indexEnd; i += INDICES_PER_TRIANGLE) { - const int i0 = triangleListMesh.indices[i]; - const int i1 = triangleListMesh.indices[i + 1]; - const int i2 = triangleListMesh.indices[i + 2]; + if (part.triangleIndices.size() > 0) { + int vIndex = 0; + for (int t = 0; t < numberOfTris; t++) { + int i0 = part.triangleIndices[vIndex++]; + int i1 = part.triangleIndices[vIndex++]; + int i2 = part.triangleIndices[vIndex++]; - const glm::vec3 v0 = transformedPoints[i0]; - const glm::vec3 v1 = transformedPoints[i1]; - const glm::vec3 v2 = transformedPoints[i2]; + // track the model space version... these points will be transformed by the FST's offset, + // which includes the scaling, rotation, and translation specified by the FST/FBX, + // this can't change at runtime, so we can safely store these in our TriangleSet + glm::vec3 v0 = glm::vec3(meshTransform * glm::vec4(mesh.vertices[i0], 1.0f)); + glm::vec3 v1 = glm::vec3(meshTransform * glm::vec4(mesh.vertices[i1], 1.0f)); + glm::vec3 v2 = glm::vec3(meshTransform * glm::vec4(mesh.vertices[i2], 1.0f)); - const Triangle tri = { v0, v1, v2 }; - partTriangleSet.insert(tri); + Triangle tri = { v0, v1, v2 }; + partTriangleSet.insert(tri); + } + } } } } @@ -964,8 +951,8 @@ void Model::setCauterized(bool cauterized, const render::ScenePointer& scene) { return; } render::Transaction transaction; - for (auto itemID : _modelMeshRenderItemIDs) { - transaction.updateItem(itemID, [cauterized](ModelMeshPartPayload& data) { + foreach (auto item, _modelMeshRenderItemsMap.keys()) { + transaction.updateItem(item, [cauterized](ModelMeshPartPayload& data) { data.setCauterized(cauterized); }); } @@ -1020,25 +1007,26 @@ bool Model::addToScene(const render::ScenePointer& scene, bool somethingAdded = false; - if (_modelMeshRenderItemIDs.empty()) { + if (_modelMeshRenderItemsMap.empty()) { bool hasTransparent = false; size_t verticesCount = 0; foreach(auto renderItem, _modelMeshRenderItems) { auto item = scene->allocateID(); auto renderPayload = std::make_shared(renderItem); - if (_modelMeshRenderItemIDs.empty() && statusGetters.size()) { + if (_modelMeshRenderItemsMap.empty() && statusGetters.size()) { renderPayload->addStatusGetters(statusGetters); } transaction.resetItem(item, renderPayload); hasTransparent = hasTransparent || renderItem.get()->getShapeKey().isTranslucent(); verticesCount += renderItem.get()->getVerticesCount(); + _modelMeshRenderItemsMap.insert(item, renderPayload); _modelMeshRenderItemIDs.emplace_back(item); } - somethingAdded = !_modelMeshRenderItemIDs.empty(); + somethingAdded = !_modelMeshRenderItemsMap.empty(); _renderInfoVertexCount = verticesCount; - _renderInfoDrawCalls = (uint32_t) _modelMeshRenderItemIDs.size(); + _renderInfoDrawCalls = _modelMeshRenderItemsMap.count(); _renderInfoHasTransparent = hasTransparent; } @@ -1053,12 +1041,14 @@ bool Model::addToScene(const render::ScenePointer& scene, } void Model::removeFromScene(const render::ScenePointer& scene, render::Transaction& transaction) { - for (auto itemID: _modelMeshRenderItemIDs) { - transaction.removeItem(itemID); + foreach (auto item, _modelMeshRenderItemsMap.keys()) { + transaction.removeItem(item); } _modelMeshRenderItemIDs.clear(); + _modelMeshRenderItemsMap.clear(); _modelMeshRenderItems.clear(); _modelMeshMaterialNames.clear(); + _modelMeshRenderItemShapes.clear(); _priorityMap.clear(); _addedToScene = false; @@ -1237,7 +1227,7 @@ void Model::setURL(const QUrl& url) { invalidCalculatedMeshBoxes(); deleteGeometry(); - auto resource = DependencyManager::get()->getModelResource(url); + auto resource = DependencyManager::get()->getGeometryResource(url); if (resource) { resource->setLoadPriority(this, _loadingPriority); _renderWatcher.setResource(resource); @@ -1426,25 +1416,25 @@ void Model::updateClusterMatrices() { return; } - updateShapeStatesFromRig(); - _needsUpdateClusterMatrices = false; - - for (int skinDeformerIndex = 0; skinDeformerIndex < (int)_meshStates.size(); skinDeformerIndex++) { - MeshState& state = _meshStates[skinDeformerIndex]; - auto numClusters = state.getNumClusters(); - for (uint32_t clusterIndex = 0; clusterIndex < numClusters; clusterIndex++) { - const auto& cbmov = _rig.getAnimSkeleton()->getClusterBindMatricesOriginalValues(skinDeformerIndex, clusterIndex); + const HFMModel& hfmModel = getHFMModel(); + for (int i = 0; i < (int) _meshStates.size(); i++) { + MeshState& state = _meshStates[i]; + int meshIndex = i; + const HFMMesh& mesh = hfmModel.meshes.at(i); + for (int j = 0; j < mesh.clusters.size(); j++) { + const HFMCluster& cluster = mesh.clusters.at(j); + int clusterIndex = j; if (_useDualQuaternionSkinning) { - auto jointPose = _rig.getJointPose(cbmov.jointIndex); + auto jointPose = _rig.getJointPose(cluster.jointIndex); Transform jointTransform(jointPose.rot(), jointPose.scale(), jointPose.trans()); Transform clusterTransform; - Transform::mult(clusterTransform, jointTransform, cbmov.inverseBindTransform); - state.clusterDualQuaternions[clusterIndex] = Model::TransformDualQuaternion(clusterTransform); + Transform::mult(clusterTransform, jointTransform, _rig.getAnimSkeleton()->getClusterBindMatricesOriginalValues(meshIndex, clusterIndex).inverseBindTransform); + state.clusterDualQuaternions[j] = Model::TransformDualQuaternion(clusterTransform); } else { - auto jointMatrix = _rig.getJointTransform(cbmov.jointIndex); - glm_mat4u_mul(jointMatrix, cbmov.inverseBindMatrix, state.clusterMatrices[clusterIndex]); + auto jointMatrix = _rig.getJointTransform(cluster.jointIndex); + glm_mat4u_mul(jointMatrix, _rig.getAnimSkeleton()->getClusterBindMatricesOriginalValues(meshIndex, clusterIndex).inverseBindMatrix, state.clusterMatrices[j]); } } } @@ -1463,7 +1453,6 @@ void Model::updateBlendshapes() { void Model::deleteGeometry() { _deleteGeometryCounter++; - _shapeStates.clear(); _meshStates.clear(); _rig.destroyAnimGraph(); _blendedBlendshapeCoefficients.clear(); @@ -1497,12 +1486,20 @@ const render::ItemIDs& Model::fetchRenderItemIDs() const { void Model::createRenderItemSet() { assert(isLoaded()); + const auto& meshes = _renderGeometry->getMeshes(); + + // all of our mesh vectors must match in size + if (meshes.size() != _meshStates.size()) { + qCDebug(renderutils) << "WARNING!!!! Mesh Sizes don't match! " << meshes.size() << _meshStates.size() << " We will not segregate mesh groups yet."; + return; + } // We should not have any existing renderItems if we enter this section of code Q_ASSERT(_modelMeshRenderItems.isEmpty()); _modelMeshRenderItems.clear(); _modelMeshMaterialNames.clear(); + _modelMeshRenderItemShapes.clear(); Transform transform; transform.setTranslation(_translation); @@ -1513,19 +1510,28 @@ void Model::createRenderItemSet() { offset.postTranslate(_offset); // Run through all of the meshes, and place them into their segregated, but unsorted buckets - const auto& shapes = _renderGeometry->getHFMModel().shapes; - for (uint32_t shapeID = 0; shapeID < shapes.size(); shapeID++) { - const auto& shape = shapes[shapeID]; + int shapeID = 0; + uint32_t numMeshes = (uint32_t)meshes.size(); + for (uint32_t i = 0; i < numMeshes; i++) { + const auto& mesh = meshes.at(i); + if (!mesh) { + continue; + } - _modelMeshRenderItems << std::make_shared(shared_from_this(), shape.mesh, shape.meshPart, shapeID, transform, offset, _created); - - auto material = getNetworkModel()->getShapeMaterial(shapeID); - _modelMeshMaterialNames.push_back(material ? material->getName() : ""); + // Create the render payloads + int numParts = (int)mesh->getNumParts(); + for (int partIndex = 0; partIndex < numParts; partIndex++) { + _modelMeshRenderItems << std::make_shared(shared_from_this(), i, partIndex, shapeID, transform, offset, _created); + auto material = getGeometry()->getShapeMaterial(shapeID); + _modelMeshMaterialNames.push_back(material ? material->getName() : ""); + _modelMeshRenderItemShapes.emplace_back(ShapeInfo{ (int)i }); + shapeID++; + } } } bool Model::isRenderable() const { - return (!_shapeStates.empty()) || (isLoaded() && _renderGeometry->getMeshes().empty()); + return !_meshStates.empty() || (isLoaded() && _renderGeometry->getMeshes().empty()); } std::set Model::getMeshIDsFromMaterialID(QString parentMaterialName) { @@ -1581,11 +1587,11 @@ void Model::applyMaterialMapping() { PrimitiveMode primitiveMode = getPrimitiveMode(); bool useDualQuaternionSkinning = _useDualQuaternionSkinning; auto modelMeshRenderItemIDs = _modelMeshRenderItemIDs; - auto shapeStates = _shapeStates; + auto modelMeshRenderItemShapes = _modelMeshRenderItemShapes; std::unordered_map shouldInvalidatePayloadShapeKeyMap; - for (auto& shape : _shapeStates) { - shouldInvalidatePayloadShapeKeyMap[shape._meshIndex] = shouldInvalidatePayloadShapeKey(shape._meshIndex); + for (auto& shape : _modelMeshRenderItemShapes) { + shouldInvalidatePayloadShapeKeyMap[shape.meshIndex] = shouldInvalidatePayloadShapeKey(shape.meshIndex); } auto& materialMapping = getMaterialMapping(); @@ -1608,7 +1614,7 @@ void Model::applyMaterialMapping() { std::weak_ptr weakSelf = shared_from_this(); auto materialLoaded = [networkMaterialResource, shapeIDs, priorityMapPerResource, renderItemsKey, primitiveMode, useDualQuaternionSkinning, - modelMeshRenderItemIDs, shapeStates, shouldInvalidatePayloadShapeKeyMap, weakSelf]() { + modelMeshRenderItemIDs, modelMeshRenderItemShapes, shouldInvalidatePayloadShapeKeyMap, weakSelf]() { std::shared_ptr self = weakSelf.lock(); if (!self || networkMaterialResource->isFailed() || networkMaterialResource->parsedMaterials.names.size() == 0) { return; @@ -1634,7 +1640,7 @@ void Model::applyMaterialMapping() { for (auto shapeID : shapeIDs) { if (shapeID < modelMeshRenderItemIDs.size()) { auto itemID = modelMeshRenderItemIDs[shapeID]; - auto meshIndex = shapeStates[shapeID]._meshIndex; + auto meshIndex = modelMeshRenderItemShapes[shapeID].meshIndex; bool invalidatePayloadShapeKey = shouldInvalidatePayloadShapeKeyMap.at(meshIndex); graphics::MaterialLayer material = graphics::MaterialLayer(networkMaterial, priorityMapPerResource.at(shapeID)); { @@ -1672,7 +1678,7 @@ void Model::addMaterial(graphics::MaterialLayer material, const std::string& par for (auto shapeID : shapeIDs) { if (shapeID < _modelMeshRenderItemIDs.size()) { auto itemID = _modelMeshRenderItemIDs[shapeID]; - auto meshIndex = _shapeStates[shapeID]._meshIndex; + auto meshIndex = _modelMeshRenderItemShapes[shapeID].meshIndex; bool invalidatePayloadShapeKey = shouldInvalidatePayloadShapeKey(meshIndex); transaction.updateItem(itemID, [material, renderItemsKey, invalidatePayloadShapeKey, primitiveMode, useDualQuaternionSkinning](ModelMeshPartPayload& data) { @@ -1694,7 +1700,7 @@ void Model::removeMaterial(graphics::MaterialPointer material, const std::string auto itemID = _modelMeshRenderItemIDs[shapeID]; auto renderItemsKey = _renderItemKeyGlobalFlags; PrimitiveMode primitiveMode = getPrimitiveMode(); - auto meshIndex = _shapeStates[shapeID]._meshIndex; + auto meshIndex = _modelMeshRenderItemShapes[shapeID].meshIndex; bool invalidatePayloadShapeKey = shouldInvalidatePayloadShapeKey(meshIndex); bool useDualQuaternionSkinning = _useDualQuaternionSkinning; transaction.updateItem(itemID, [material, renderItemsKey, @@ -1709,13 +1715,14 @@ void Model::removeMaterial(graphics::MaterialPointer material, const std::string AbstractViewStateInterface::instance()->getMain3DScene()->enqueueTransaction(transaction); } -class CollisionRenderGeometry : public NetworkModel { +class CollisionRenderGeometry : public Geometry { public: CollisionRenderGeometry(graphics::MeshPointer mesh) { _hfmModel = std::make_shared(); std::shared_ptr meshes = std::make_shared(); meshes->push_back(mesh); _meshes = meshes; + _meshParts = std::shared_ptr(); } }; @@ -1866,7 +1873,7 @@ void Blender::run() { bool Model::maybeStartBlender() { if (isLoaded()) { - QThreadPool::globalInstance()->start(new Blender(getThisPointer(), getNetworkModel()->getConstHFMModelPointer(), + QThreadPool::globalInstance()->start(new Blender(getThisPointer(), getGeometry()->getConstHFMModelPointer(), ++_blendNumber, _blendshapeCoefficients)); return true; } diff --git a/libraries/render-utils/src/Model.h b/libraries/render-utils/src/Model.h index fd6bdec8ea..bdb4a35071 100644 --- a/libraries/render-utils/src/Model.h +++ b/libraries/render-utils/src/Model.h @@ -172,7 +172,7 @@ public: virtual void updateBlendshapes(); /// Returns a reference to the shared geometry. - const NetworkModel::Pointer& getNetworkModel() const { return _renderGeometry; } + const Geometry::Pointer& getGeometry() const { return _renderGeometry; } const QVariantMap getTextures() const { assert(isLoaded()); return _renderGeometry->getTextures(); } Q_INVOKABLE virtual void setTextures(const QVariantMap& textures); @@ -291,16 +291,6 @@ public: int getRenderInfoDrawCalls() const { return _renderInfoDrawCalls; } bool getRenderInfoHasTransparent() const { return _renderInfoHasTransparent; } - class ShapeState { - public: - glm::mat4 _rootFromJointTransform; - uint32_t _jointIndex{ hfm::UNDEFINED_KEY }; - uint32_t _meshIndex{ hfm::UNDEFINED_KEY }; - uint32_t _meshPartIndex{ hfm::UNDEFINED_KEY }; - uint32_t _skinDeformerIndex{ hfm::UNDEFINED_KEY }; - }; - const ShapeState& getShapeState(int index) { return _shapeStates.at(index); } - class TransformDualQuaternion { public: TransformDualQuaternion() {} @@ -343,13 +333,12 @@ public: public: std::vector clusterDualQuaternions; std::vector clusterMatrices; - - uint32_t getNumClusters() const { return (uint32_t) std::max(clusterMatrices.size(), clusterMatrices.size()); } }; + const MeshState& getMeshState(int index) { return _meshStates.at(index); } uint32_t getGeometryCounter() const { return _deleteGeometryCounter; } - + const QMap& getRenderItems() const { return _modelMeshRenderItemsMap; } BlendShapeOperator getModelBlendshapeOperator() const { return _modelBlendshapeOperator; } void renderDebugMeshBoxes(gpu::Batch& batch, bool forward); @@ -397,9 +386,9 @@ protected: /// \return true if joint exists bool getJointPosition(int jointIndex, glm::vec3& position) const; - NetworkModel::Pointer _renderGeometry; // only ever set by its watcher + Geometry::Pointer _renderGeometry; // only ever set by its watcher - ModelResourceWatcher _renderWatcher; + GeometryResourceWatcher _renderWatcher; SpatiallyNestable* _spatiallyNestableOverride; @@ -425,10 +414,6 @@ protected: bool _snappedToRegistrationPoint; /// are we currently snapped to a registration point glm::vec3 _registrationPoint = glm::vec3(0.5f); /// the point in model space our center is snapped to - - std::vector _shapeStates; - void updateShapeStatesFromRig(); - std::vector _meshStates; virtual void initJointStates(); @@ -473,7 +458,10 @@ protected: static AbstractViewStateInterface* _viewState; QVector> _modelMeshRenderItems; + QMap _modelMeshRenderItemsMap; render::ItemIDs _modelMeshRenderItemIDs; + using ShapeInfo = struct { int meshIndex; }; + std::vector _modelMeshRenderItemShapes; std::vector _modelMeshMaterialNames; bool _addedToScene { false }; // has been added to scene @@ -525,7 +513,7 @@ private: }; Q_DECLARE_METATYPE(ModelPointer) -Q_DECLARE_METATYPE(NetworkModel::WeakPointer) +Q_DECLARE_METATYPE(Geometry::WeakPointer) Q_DECLARE_METATYPE(BlendshapeOffset) /// Handle management of pending models that need blending diff --git a/libraries/render-utils/src/SoftAttachmentModel.cpp b/libraries/render-utils/src/SoftAttachmentModel.cpp index c5792f8331..24d6081743 100644 --- a/libraries/render-utils/src/SoftAttachmentModel.cpp +++ b/libraries/render-utils/src/SoftAttachmentModel.cpp @@ -41,29 +41,30 @@ void SoftAttachmentModel::updateClusterMatrices() { _needsUpdateClusterMatrices = false; + const HFMModel& hfmModel = getHFMModel(); - for (int skinDeformerIndex = 0; skinDeformerIndex < (int)_meshStates.size(); skinDeformerIndex++) { - MeshState& state = _meshStates[skinDeformerIndex]; - auto numClusters = state.getNumClusters(); - for (uint32_t clusterIndex = 0; clusterIndex < numClusters; clusterIndex++) { - const auto& cbmov = _rig.getAnimSkeleton()->getClusterBindMatricesOriginalValues(skinDeformerIndex, clusterIndex); + for (int i = 0; i < (int) _meshStates.size(); i++) { + MeshState& state = _meshStates[i]; + const HFMMesh& mesh = hfmModel.meshes.at(i); + int meshIndex = i; + for (int j = 0; j < mesh.clusters.size(); j++) { + const HFMCluster& cluster = mesh.clusters.at(j); + int clusterIndex = j; // TODO: cache these look-ups as an optimization - int jointIndexOverride = getJointIndexOverride(cbmov.jointIndex); - auto rig = &_rigOverride; + int jointIndexOverride = getJointIndexOverride(cluster.jointIndex); + glm::mat4 jointMatrix; if (jointIndexOverride >= 0 && jointIndexOverride < _rigOverride.getJointStateCount()) { - rig = &_rig; - } - - if (_useDualQuaternionSkinning) { - auto jointPose = rig->getJointPose(cbmov.jointIndex); - Transform jointTransform(jointPose.rot(), jointPose.scale(), jointPose.trans()); - Transform clusterTransform; - Transform::mult(clusterTransform, jointTransform, cbmov.inverseBindTransform); - state.clusterDualQuaternions[clusterIndex] = Model::TransformDualQuaternion(clusterTransform); + jointMatrix = _rigOverride.getJointTransform(jointIndexOverride); } else { - auto jointMatrix = rig->getJointTransform(cbmov.jointIndex); - glm_mat4u_mul(jointMatrix, cbmov.inverseBindMatrix, state.clusterMatrices[clusterIndex]); + jointMatrix = _rig.getJointTransform(cluster.jointIndex); + } + if (_useDualQuaternionSkinning) { + glm::mat4 m; + glm_mat4u_mul(jointMatrix, _rig.getAnimSkeleton()->getClusterBindMatricesOriginalValues(meshIndex, clusterIndex).inverseBindMatrix, m); + state.clusterDualQuaternions[j] = Model::TransformDualQuaternion(m); + } else { + glm_mat4u_mul(jointMatrix, _rig.getAnimSkeleton()->getClusterBindMatricesOriginalValues(meshIndex, clusterIndex).inverseBindMatrix, state.clusterMatrices[j]); } } } diff --git a/libraries/shared/src/GLMHelpers.h b/libraries/shared/src/GLMHelpers.h index 5787295da6..cfb4bb6398 100644 --- a/libraries/shared/src/GLMHelpers.h +++ b/libraries/shared/src/GLMHelpers.h @@ -392,14 +392,4 @@ inline glm::vec4 extractFov( const glm::mat4& m) { return result; } -inline bool operator<(const glm::vec3& lhs, const glm::vec3& rhs) { - return (lhs.x < rhs.x) || ( - (lhs.x == rhs.x) && ( - (lhs.y < rhs.y) || ( - (lhs.y == rhs.y) && (lhs.z < rhs.z) - ) - ) - ); -} - #endif // hifi_GLMHelpers_h diff --git a/libraries/shared/src/ShapeInfo.cpp b/libraries/shared/src/ShapeInfo.cpp index cb9ad41fd0..c60d1c2574 100644 --- a/libraries/shared/src/ShapeInfo.cpp +++ b/libraries/shared/src/ShapeInfo.cpp @@ -189,7 +189,7 @@ uint32_t ShapeInfo::getNumSubShapes() const { return 0; case SHAPE_TYPE_COMPOUND: case SHAPE_TYPE_SIMPLE_COMPOUND: - return (uint32_t)_pointCollection.size(); + return _pointCollection.size(); case SHAPE_TYPE_MULTISPHERE: case SHAPE_TYPE_SIMPLE_HULL: case SHAPE_TYPE_STATIC_MESH: @@ -200,10 +200,10 @@ uint32_t ShapeInfo::getNumSubShapes() const { } } -uint32_t ShapeInfo::getLargestSubshapePointCount() const { - uint32_t numPoints = 0; - for (uint32_t i = 0; i < (uint32_t)_pointCollection.size(); ++i) { - uint32_t n = (uint32_t)_pointCollection[i].size(); +int ShapeInfo::getLargestSubshapePointCount() const { + int numPoints = 0; + for (int i = 0; i < _pointCollection.size(); ++i) { + int n = _pointCollection[i].size(); if (n > numPoints) { numPoints = n; } diff --git a/libraries/shared/src/ShapeInfo.h b/libraries/shared/src/ShapeInfo.h index 676f38d087..6b0f981b24 100644 --- a/libraries/shared/src/ShapeInfo.h +++ b/libraries/shared/src/ShapeInfo.h @@ -12,7 +12,7 @@ #ifndef hifi_ShapeInfo_h #define hifi_ShapeInfo_h -#include +#include #include #include #include @@ -53,11 +53,11 @@ class ShapeInfo { public: - using PointList = std::vector; - using PointCollection = std::vector; - using TriangleIndices = std::vector; + using PointList = QVector; + using PointCollection = QVector; + using TriangleIndices = QVector; using SphereData = glm::vec4; - using SphereCollection = std::vector; + using SphereCollection = QVector; static QString getNameForShapeType(ShapeType type); static ShapeType getShapeTypeForName(QString string); @@ -85,7 +85,7 @@ public: TriangleIndices& getTriangleIndices() { return _triangleIndices; } const TriangleIndices& getTriangleIndices() const { return _triangleIndices; } - uint32_t getLargestSubshapePointCount() const; + int getLargestSubshapePointCount() const; float computeVolume() const; diff --git a/tools/vhacd-util/src/VHACDUtil.cpp b/tools/vhacd-util/src/VHACDUtil.cpp index da20339123..a5ad5bc891 100644 --- a/tools/vhacd-util/src/VHACDUtil.cpp +++ b/tools/vhacd-util/src/VHACDUtil.cpp @@ -149,11 +149,12 @@ void vhacd::VHACDUtil::fattenMesh(const HFMMesh& mesh, const glm::mat4& modelOff result.vertices << p3; // add the new point to the result mesh HFMMeshPart newMeshPart; + setMeshPartDefaults(newMeshPart, "unknown"); newMeshPart.triangleIndices << index0 << index1 << index2; newMeshPart.triangleIndices << index0 << index3 << index1; newMeshPart.triangleIndices << index1 << index3 << index2; newMeshPart.triangleIndices << index2 << index3 << index0; - result.parts.push_back(newMeshPart); + result.parts.append(newMeshPart); } } @@ -258,8 +259,8 @@ void vhacd::VHACDUtil::getConvexResults(VHACD::IVHACD* convexifier, HFMMesh& res VHACD::IVHACD::ConvexHull hull; convexifier->GetConvexHull(j, hull); - resultMesh.parts.push_back(HFMMeshPart()); - HFMMeshPart& resultMeshPart = resultMesh.parts.back(); + resultMesh.parts.append(HFMMeshPart()); + HFMMeshPart& resultMeshPart = resultMesh.parts.last(); int hullIndexStart = resultMesh.vertices.size(); resultMesh.vertices.reserve(hullIndexStart + hull.m_nPoints); @@ -299,8 +300,8 @@ bool vhacd::VHACDUtil::computeVHACD(HFMModel& hfmModel, } // count the mesh-parts - size_t numParts = 0; - for (const HFMMesh& mesh : hfmModel.meshes) { + int numParts = 0; + foreach (const HFMMesh& mesh, hfmModel.meshes) { numParts += mesh.parts.size(); } if (_verbose) { @@ -310,8 +311,8 @@ bool vhacd::VHACDUtil::computeVHACD(HFMModel& hfmModel, VHACD::IVHACD * convexifier = VHACD::CreateVHACD(); result.meshExtents.reset(); - result.meshes.push_back(HFMMesh()); - HFMMesh &resultMesh = result.meshes.back(); + result.meshes.append(HFMMesh()); + HFMMesh &resultMesh = result.meshes.last(); const uint32_t POINT_STRIDE = 3; const uint32_t TRIANGLE_STRIDE = 3; @@ -347,7 +348,7 @@ bool vhacd::VHACDUtil::computeVHACD(HFMModel& hfmModel, if (_verbose) { qDebug() << "mesh" << meshIndex << ": " - << " parts =" << mesh.parts.size() + << " parts =" << mesh.parts.size() << " clusters =" << mesh.clusters.size() << " vertices =" << numVertices; } ++meshIndex; diff --git a/tools/vhacd-util/src/VHACDUtilApp.cpp b/tools/vhacd-util/src/VHACDUtilApp.cpp index 61a6b38181..3d675f8baf 100644 --- a/tools/vhacd-util/src/VHACDUtilApp.cpp +++ b/tools/vhacd-util/src/VHACDUtilApp.cpp @@ -387,7 +387,7 @@ VHACDUtilApp::VHACDUtilApp(int argc, char* argv[]) : } if (verbose) { - auto totalHulls = result.meshes[0].parts.size(); + int totalHulls = result.meshes[0].parts.size(); qDebug() << "output file =" << outputFilename; qDebug() << "vertices =" << totalVertices; qDebug() << "triangles =" << totalTriangles; @@ -402,7 +402,7 @@ VHACDUtilApp::VHACDUtilApp(int argc, char* argv[]) : HFMMesh result; // count the mesh-parts - size_t meshCount = 0; + unsigned int meshCount = 0; foreach (const HFMMesh& mesh, fbx.meshes) { meshCount += mesh.parts.size(); } @@ -412,7 +412,7 @@ VHACDUtilApp::VHACDUtilApp(int argc, char* argv[]) : vUtil.fattenMesh(mesh, fbx.offset, result); } - newFbx.meshes.push_back(result); + newFbx.meshes.append(result); writeOBJ(outputFilename, newFbx, outputCentimeters); } } From ade6bf24bb81688733f72c2c699bf569ef3285d5 Mon Sep 17 00:00:00 2001 From: HifiExperiments Date: Wed, 3 Jun 2020 15:19:54 -0700 Subject: [PATCH 128/160] fix issues with glb urls --- libraries/fbx/src/GLTFSerializer.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libraries/fbx/src/GLTFSerializer.cpp b/libraries/fbx/src/GLTFSerializer.cpp index 9d9d16d733..7fa1da2971 100755 --- a/libraries/fbx/src/GLTFSerializer.cpp +++ b/libraries/fbx/src/GLTFSerializer.cpp @@ -437,7 +437,7 @@ bool GLTFSerializer::addBuffer(const QJsonObject& object) { getIntVal(object, "byteLength", buffer.byteLength, buffer.defined); - if (_url.toString().endsWith("glb")) { + if (_url.path().endsWith("glb")) { if (!_glbBinary.isEmpty()) { buffer.blob = _glbBinary; } else { @@ -677,7 +677,7 @@ bool GLTFSerializer::parseGLTF(const hifi::ByteArray& data) { hifi::ByteArray jsonChunk = data; - if (_url.toString().endsWith("glb") && data.indexOf("glTF") == 0 && data.contains("JSON")) { + if (_url.path().endsWith("glb") && data.indexOf("glTF") == 0 && data.contains("JSON")) { jsonChunk = setGLBChunks(data); } @@ -1686,7 +1686,7 @@ HFMTexture GLTFSerializer::getHFMTexture(const GLTFTexture& texture) { fbxtex.name = fname; fbxtex.filename = textureUrl.toEncoded(); - if (_url.toString().endsWith("glb") && !_glbBinary.isEmpty()) { + if (_url.path().endsWith("glb") && !_glbBinary.isEmpty()) { int bufferView = _file.images[texture.source].bufferView; GLTFBufferView& imagesBufferview = _file.bufferviews[bufferView]; From ee1d46af944f50603a86f49997c8bd403d9d97b0 Mon Sep 17 00:00:00 2001 From: Robert Adams Date: Thu, 4 Jun 2020 09:35:45 -0700 Subject: [PATCH 129/160] Include so building on Windows10 with Visual Studio 2019 works. --- libraries/ktx/src/khronos/KHR.h | 1 + libraries/shared/src/shared/Storage.h | 1 + 2 files changed, 2 insertions(+) diff --git a/libraries/ktx/src/khronos/KHR.h b/libraries/ktx/src/khronos/KHR.h index 617e40ce06..cd3eb109d7 100644 --- a/libraries/ktx/src/khronos/KHR.h +++ b/libraries/ktx/src/khronos/KHR.h @@ -11,6 +11,7 @@ #define khronos_khr_hpp #include +#include namespace khronos { diff --git a/libraries/shared/src/shared/Storage.h b/libraries/shared/src/shared/Storage.h index 6a2cecf8b9..f64f2758c3 100644 --- a/libraries/shared/src/shared/Storage.h +++ b/libraries/shared/src/shared/Storage.h @@ -14,6 +14,7 @@ #include #include #include +#include #include #include From ef268c6207e2ad8cf9dadad27c61aceddbc531af Mon Sep 17 00:00:00 2001 From: David Rowe Date: Fri, 5 Jun 2020 11:21:59 +1200 Subject: [PATCH 130/160] Fix PR builds --- .github/workflows/pr_build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pr_build.yml b/.github/workflows/pr_build.yml index 02024a82ee..f271247416 100644 --- a/.github/workflows/pr_build.yml +++ b/.github/workflows/pr_build.yml @@ -70,7 +70,7 @@ jobs: shell: bash run: | echo "${{ steps.buildenv1.outputs.symbols_archive }}" - echo ::set-env name=ARTIFACT_PATTERN::ProjectAthena-Alpha-PR${{ github.event.number }}-*.$INSTALLER_EXT + echo ::set-env name=ARTIFACT_PATTERN::Vircadia-Alpha-PR${{ github.event.number }}-*.$INSTALLER_EXT # Build type variables echo ::set-env name=INSTALLER::HighFidelity-Beta-$RELEASE_NUMBER-$GIT_COMMIT_SHORT.$INSTALLER_EXT - name: Clear Working Directory From 9e9469fd6d7d2c990a0214e26889d8a93b2e0164 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Fri, 5 Jun 2020 11:22:15 +1200 Subject: [PATCH 131/160] Tidy residual High Fidelity reference --- .github/workflows/pr_build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pr_build.yml b/.github/workflows/pr_build.yml index f271247416..f28cf1e66b 100644 --- a/.github/workflows/pr_build.yml +++ b/.github/workflows/pr_build.yml @@ -72,7 +72,7 @@ jobs: echo "${{ steps.buildenv1.outputs.symbols_archive }}" echo ::set-env name=ARTIFACT_PATTERN::Vircadia-Alpha-PR${{ github.event.number }}-*.$INSTALLER_EXT # Build type variables - echo ::set-env name=INSTALLER::HighFidelity-Beta-$RELEASE_NUMBER-$GIT_COMMIT_SHORT.$INSTALLER_EXT + echo ::set-env name=INSTALLER::Vircadia-Alpha-$RELEASE_NUMBER-$GIT_COMMIT_SHORT.$INSTALLER_EXT - name: Clear Working Directory if: startsWith(matrix.os, 'windows') shell: bash From 5f838271987d44608b75504a2d29d624d8c9e0a0 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Sat, 6 Jun 2020 10:36:30 +1200 Subject: [PATCH 132/160] Fix not being able to delete entities in serverless domains --- libraries/entities/src/EntityScriptingInterface.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/entities/src/EntityScriptingInterface.cpp b/libraries/entities/src/EntityScriptingInterface.cpp index d68747b96c..fd83c99ca5 100644 --- a/libraries/entities/src/EntityScriptingInterface.cpp +++ b/libraries/entities/src/EntityScriptingInterface.cpp @@ -987,8 +987,8 @@ void EntityScriptingInterface::deleteEntity(const QUuid& id) { // Deleting an entity has consequences for linked children: some can be deleted but others can't. // Local- and my-avatar-entities can be deleted immediately, but other-avatar-entities can't be deleted - // by this context, and a domain-entity must rountrip through the entity-server for authorization. - if (entity->isDomainEntity()) { + // by this context, and a domain-entity must round trip through the entity-server for authorization. + if (entity->isDomainEntity() && !_entityTree->isServerlessMode()) { getEntityPacketSender()->queueEraseEntityMessage(id); } else { entitiesToDeleteImmediately.push_back(entity); From 8494e6e6b560db335f21e8b75cbb5233d40d8312 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Sat, 6 Jun 2020 15:15:03 +1200 Subject: [PATCH 133/160] Fix visibility of values in Wearables dialog --- interface/resources/qml/controlsUit/SpinBox.qml | 4 ++-- interface/resources/qml/hifi/avatarapp/AdjustWearables.qml | 4 +--- interface/resources/qml/hifi/avatarapp/Vector3.qml | 6 +++--- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/interface/resources/qml/controlsUit/SpinBox.qml b/interface/resources/qml/controlsUit/SpinBox.qml index 564157efb0..a888bbd07c 100644 --- a/interface/resources/qml/controlsUit/SpinBox.qml +++ b/interface/resources/qml/controlsUit/SpinBox.qml @@ -109,7 +109,7 @@ SpinBox { id: spinboxText z: 2 color: isLightColorScheme - ? (spinBox.activeFocus ? hifi.colors.black : hifi.colors.faintGray) + ? (spinBox.activeFocus ? hifi.colors.black : hifi.colors.baseGrayHighlight) : (spinBox.activeFocus ? hifi.colors.white : hifi.colors.lightGrayText) selectedTextColor: hifi.colors.black selectionColor: hifi.colors.primaryHighlight @@ -130,7 +130,7 @@ SpinBox { } color: isLightColorScheme - ? (spinBox.activeFocus ? hifi.colors.black : hifi.colors.faintGray) + ? (spinBox.activeFocus ? hifi.colors.black : hifi.colors.baseGrayHighlight) : (spinBox.activeFocus ? hifi.colors.white : hifi.colors.lightGrayText) text: suffix verticalAlignment: Qt.AlignVCenter diff --git a/interface/resources/qml/hifi/avatarapp/AdjustWearables.qml b/interface/resources/qml/hifi/avatarapp/AdjustWearables.qml index 15a20b491a..dfee6e60f7 100644 --- a/interface/resources/qml/hifi/avatarapp/AdjustWearables.qml +++ b/interface/resources/qml/hifi/avatarapp/AdjustWearables.qml @@ -403,7 +403,6 @@ Rectangle { Vector3 { id: positionVector - backgroundColor: "lightgray" enabled: getCurrentWearable() !== null function set(localPosition) { @@ -463,7 +462,6 @@ Rectangle { Vector3 { id: rotationVector - backgroundColor: "lightgray" enabled: getCurrentWearable() !== null function set(localRotationAngles) { @@ -550,7 +548,7 @@ Rectangle { realFrom: 0.1 realTo: 3.0 realValue: 1.0 - backgroundColor: "lightgray" + backgroundColor: activeFocus ? "white" : "lightgray" width: positionVector.spinboxWidth colorScheme: hifi.colorSchemes.light diff --git a/interface/resources/qml/hifi/avatarapp/Vector3.qml b/interface/resources/qml/hifi/avatarapp/Vector3.qml index 698123104f..54f8d087e5 100644 --- a/interface/resources/qml/hifi/avatarapp/Vector3.qml +++ b/interface/resources/qml/hifi/avatarapp/Vector3.qml @@ -29,7 +29,7 @@ Row { id: xspinner width: parent.spinboxWidth labelInside: "X:" - backgroundColor: parent.backgroundColor + backgroundColor: activeFocus ? "white" : "lightgray" colorLabelInside: hifi.colors.redHighlight colorScheme: hifi.colorSchemes.light decimals: root.decimals; @@ -43,7 +43,7 @@ Row { id: yspinner width: parent.spinboxWidth labelInside: "Y:" - backgroundColor: parent.backgroundColor + backgroundColor: activeFocus ? "white" : "lightgray" colorLabelInside: hifi.colors.greenHighlight colorScheme: hifi.colorSchemes.light decimals: root.decimals; @@ -57,7 +57,7 @@ Row { id: zspinner width: parent.spinboxWidth labelInside: "Z:" - backgroundColor: parent.backgroundColor + backgroundColor: activeFocus ? "white" : "lightgray" colorLabelInside: hifi.colors.primaryHighlight colorScheme: hifi.colorSchemes.light decimals: root.decimals; From ffc1b7ee53e570b8416eeaffac5b05a343ddbf1f Mon Sep 17 00:00:00 2001 From: Heather Anderson Date: Sat, 21 Mar 2020 21:50:05 +0000 Subject: [PATCH 134/160] Initial pass renaming athena -> vircadia --- pkg-scripts/Dockerfile.templ | 26 ++-- pkg-scripts/athena-assignment-client.service | 18 --- pkg-scripts/athena-assignment-client@.service | 20 --- pkg-scripts/athena-domain-server.service | 18 --- pkg-scripts/athena-domain-server@.service | 20 --- pkg-scripts/athena-server.spec | 128 ------------------ pkg-scripts/athena-server.target | 11 -- pkg-scripts/athena-server@.target | 11 -- pkg-scripts/docker-entrypoint.sh | 22 +-- ...r.conf => docker-vircadia-supervisor.conf} | 36 ++--- pkg-scripts/make-deb-server | 55 ++++---- pkg-scripts/make-docker-server | 4 +- pkg-scripts/make-rpm-server | 2 +- pkg-scripts/new-server | 36 ++--- pkg-scripts/server-control | 8 +- pkg-scripts/server-postinst | 22 +-- pkg-scripts/server-prerm | 4 +- pkg-scripts/server-rules | 36 ++--- .../vircadia-assignment-client.service | 18 +++ .../vircadia-assignment-client@.service | 20 +++ pkg-scripts/vircadia-domain-server.service | 17 +++ pkg-scripts/vircadia-domain-server@.service | 19 +++ ...er.service => vircadia-ice-server.service} | 14 +- ...@.service => vircadia-ice-server@.service} | 16 +-- pkg-scripts/vircadia-server.spec | 128 ++++++++++++++++++ pkg-scripts/vircadia-server.target | 11 ++ pkg-scripts/vircadia-server@.target | 11 ++ 27 files changed, 361 insertions(+), 370 deletions(-) delete mode 100644 pkg-scripts/athena-assignment-client.service delete mode 100644 pkg-scripts/athena-assignment-client@.service delete mode 100644 pkg-scripts/athena-domain-server.service delete mode 100644 pkg-scripts/athena-domain-server@.service delete mode 100644 pkg-scripts/athena-server.spec delete mode 100644 pkg-scripts/athena-server.target delete mode 100644 pkg-scripts/athena-server@.target rename pkg-scripts/{docker-athena-supervisor.conf => docker-vircadia-supervisor.conf} (60%) create mode 100644 pkg-scripts/vircadia-assignment-client.service create mode 100644 pkg-scripts/vircadia-assignment-client@.service create mode 100644 pkg-scripts/vircadia-domain-server.service create mode 100644 pkg-scripts/vircadia-domain-server@.service rename pkg-scripts/{athena-ice-server.service => vircadia-ice-server.service} (63%) rename pkg-scripts/{athena-ice-server@.service => vircadia-ice-server@.service} (56%) create mode 100644 pkg-scripts/vircadia-server.spec create mode 100644 pkg-scripts/vircadia-server.target create mode 100644 pkg-scripts/vircadia-server@.target diff --git a/pkg-scripts/Dockerfile.templ b/pkg-scripts/Dockerfile.templ index 76d27e8c78..e340024bce 100644 --- a/pkg-scripts/Dockerfile.templ +++ b/pkg-scripts/Dockerfile.templ @@ -19,25 +19,25 @@ RUN DEBIAN_FRONTEND=noninteractive apt-get update && \ apt-get install -y tzdata supervisor ${DEPENDS} && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* && \ - mkdir -p /var/lib/athena -RUN groupadd -r athena ; \ - useradd -Nr athena -d /var/lib/athena ; \ - usermod -aG athena athena ; \ - chown athena.athena /var/lib/athena ; \ + mkdir -p /var/lib/vircadia +RUN groupadd -r vircadia ; \ + useradd -Nr vircadia -d /var/lib/vircadia ; \ + usermod -aG vircadia vircadia ; \ + chown vircadia.vircadia /var/lib/vircadia ; \ exit 0 -VOLUME /var/lib/athena +VOLUME /var/lib/vircadia RUN mkdir -p /var/run ; chmod 777 /var/run -COPY athena.conf /etc/supervisor/conf.d/athena.conf +COPY vircadia.conf /etc/supervisor/conf.d/vircadia.conf COPY entrypoint.sh / -COPY opt /opt/athena -COPY lib /opt/athena/lib +COPY opt /opt/vircadia +COPY lib /opt/vircadia/lib ENTRYPOINT ["/entrypoint.sh"] -CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/athena.conf"] +CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/vircadia.conf"] LABEL \ - net.projectathena.gitsrc="${GITSRC}" \ - net.projectathena.gitdate="${GITDATE}" \ - net.projectathena.gitcommit="${GITCOMMIT}" + net.vircadia.gitsrc="${GITSRC}" \ + net.vircadia.gitdate="${GITDATE}" \ + net.vircadia.gitcommit="${GITCOMMIT}" diff --git a/pkg-scripts/athena-assignment-client.service b/pkg-scripts/athena-assignment-client.service deleted file mode 100644 index a6407294dc..0000000000 --- a/pkg-scripts/athena-assignment-client.service +++ /dev/null @@ -1,18 +0,0 @@ -[Unit] -Description=Assignment client service for Athena server -After=network.target -PartOf=athena-server.target - -[Service] -Restart=always - -WorkingDirectory=/opt/athena -Environment="LD_LIBRARY_PATH=/opt/athena/lib" -User=athena -Group=athena -#LimitCORE=infinity -#ExecStart=/opt/athena/assignment-client -n 6 -ExecStart=/opt/athena/assignment-client --min 6 --max 20 - -[Install] -WantedBy=multi-user.target diff --git a/pkg-scripts/athena-assignment-client@.service b/pkg-scripts/athena-assignment-client@.service deleted file mode 100644 index 7f60ed4d28..0000000000 --- a/pkg-scripts/athena-assignment-client@.service +++ /dev/null @@ -1,20 +0,0 @@ -[Unit] -Description=Assignment client service for Athena server -After=network.target -PartOf=athena-server@%i.target - -[Service] -Restart=always - -WorkingDirectory=/opt/athena -EnvironmentFile=/etc/opt/athena/%i.conf -Environment="LD_LIBRARY_PATH=/opt/athena/lib" "HOME=/var/lib/athena/%i" -PrivateTmp=true -User=athena -Group=athena -#LimitCORE=infinity -#ExecStart=/opt/athena/assignment-client -n 6 -ExecStart=/opt/athena/assignment-client --min 6 --max 20 --server-port $HIFI_DOMAIN_SERVER_PORT - -[Install] -WantedBy=multi-user.target diff --git a/pkg-scripts/athena-domain-server.service b/pkg-scripts/athena-domain-server.service deleted file mode 100644 index a5db9dc269..0000000000 --- a/pkg-scripts/athena-domain-server.service +++ /dev/null @@ -1,18 +0,0 @@ -[Unit] -Description=Domain Server service for Athena -After=network.target -PartOf=athena-server.target - -[Service] -Restart=on-failure - -WorkingDirectory=/opt/athena -Environment="LD_LIBRARY_PATH=/opt/athena/lib" -User=athena -Group=athena -#LimitCORE=infinity -#ExecStartPre=/bin/bash -c 'if /usr/bin/pgrep -l domain-server; then /usr/bin/pkill -SIGKILL -f /usr/share/hifi/domain-server/domain-server; fi' -ExecStart=/opt/athena/domain-server - -[Install] -WantedBy=multi-user.target diff --git a/pkg-scripts/athena-domain-server@.service b/pkg-scripts/athena-domain-server@.service deleted file mode 100644 index 330d8ac81d..0000000000 --- a/pkg-scripts/athena-domain-server@.service +++ /dev/null @@ -1,20 +0,0 @@ -[Unit] -Description=Domain Server service for Athena -After=network.target -PartOf=athena-server@%i.target - -[Service] -Restart=on-failure - -WorkingDirectory=/opt/athena -EnvironmentFile=/etc/opt/athena/%i.conf -Environment="LD_LIBRARY_PATH=/opt/athena/lib" "HOME=/var/lib/athena/%i" -PrivateTmp=true -User=athena -Group=athena -#LimitCORE=infinity -#ExecStartPre=/bin/bash -c 'if /usr/bin/pgrep -l domain-server; then /usr/bin/pkill -SIGKILL -f /usr/share/hifi/domain-server/domain-server; fi' -ExecStart=/opt/athena/domain-server - -[Install] -WantedBy=multi-user.target diff --git a/pkg-scripts/athena-server.spec b/pkg-scripts/athena-server.spec deleted file mode 100644 index 7910c8114b..0000000000 --- a/pkg-scripts/athena-server.spec +++ /dev/null @@ -1,128 +0,0 @@ -#ATHENA=~/Athena rpmbuild --target x86_64 -bb athena-server.spec -%define version %{lua:print(os.getenv("VERSION"))} -%define depends %{lua:print(os.getenv("DEPENDS"))} - -Name: athena-server -Version: %{version} -Release: 1%{?dist} -Summary: Project Athena metaverse platform, based on the High Fidelity Engine. - -License: ASL 2.0 -URL: https://projectathena.io -Source0: https://github.com/daleglass/athena-builder/blob/master/athena_builder - -#BuildRequires: systemd-rpm-macros -BuildRequires: chrpath -Requires: %{depends} -BuildArch: x86_64 -AutoReq: no -AutoProv: no - -%description -Project Athena allows creation and sharing of VR experiences. - The Project Athena metaverse provides built-in social features, including avatar interactions, spatialized audio and interactive physics. Additionally, you have the ability to import any 3D object into your virtual environment. - - -%prep - - -%build - - -%install -rm -rf $RPM_BUILD_ROOT -install -d $RPM_BUILD_ROOT/opt/athena -install -m 0755 -t $RPM_BUILD_ROOT/opt/athena $ATHENA/build/assignment-client/assignment-client -install -m 0755 -t $RPM_BUILD_ROOT/opt/athena $ATHENA/build/domain-server/domain-server -install -m 0755 -t $RPM_BUILD_ROOT/opt/athena $ATHENA/build/tools/oven/oven -#install -m 0755 -t $RPM_BUILD_ROOT/opt/athena $ATHENA/build/ice-server/ice-server -strip --strip-all $RPM_BUILD_ROOT/opt/athena/* -chrpath -d $RPM_BUILD_ROOT/opt/athena/* -install -m 0755 -t $RPM_BUILD_ROOT/opt/athena $ATHENA/source/pkg-scripts/new-server -install -d $RPM_BUILD_ROOT/opt/athena/lib -install -m 0644 -t $RPM_BUILD_ROOT/opt/athena/lib $ATHENA/build/libraries/*/*.so -strip --strip-all $RPM_BUILD_ROOT/opt/athena/lib/* -chrpath -d $RPM_BUILD_ROOT/opt/athena/lib/* -install -m 0644 -t $RPM_BUILD_ROOT/opt/athena/lib $ATHENA/qt5-install/lib/libQt5Network.so.*.*.* -install -m 0644 -t $RPM_BUILD_ROOT/opt/athena/lib $ATHENA/qt5-install/lib/libQt5Core.so.*.*.* -install -m 0644 -t $RPM_BUILD_ROOT/opt/athena/lib $ATHENA/qt5-install/lib/libQt5Widgets.so.*.*.* -install -m 0644 -t $RPM_BUILD_ROOT/opt/athena/lib $ATHENA/qt5-install/lib/libQt5Gui.so.*.*.* -install -m 0644 -t $RPM_BUILD_ROOT/opt/athena/lib $ATHENA/qt5-install/lib/libQt5Script.so.*.*.* -install -m 0644 -t $RPM_BUILD_ROOT/opt/athena/lib $ATHENA/qt5-install/lib/libQt5Quick.so.*.*.* -install -m 0644 -t $RPM_BUILD_ROOT/opt/athena/lib $ATHENA/qt5-install/lib/libQt5WebSockets.so.*.*.* -install -m 0644 -t $RPM_BUILD_ROOT/opt/athena/lib $ATHENA/qt5-install/lib/libQt5Qml.so.*.*.* -install -m 0644 -t $RPM_BUILD_ROOT/opt/athena/lib $ATHENA/qt5-install/lib/libQt5ScriptTools.so.*.*.* -install -m 0644 -t $RPM_BUILD_ROOT/opt/athena/lib $ATHENA/build/ext/makefiles/quazip/project/lib/libquazip5.so.*.*.* -install -d $RPM_BUILD_ROOT/usr/lib/systemd/system -install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/pkg-scripts/athena-assignment-client.service -install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/pkg-scripts/athena-assignment-client@.service -install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/pkg-scripts/athena-domain-server.service -install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/pkg-scripts/athena-domain-server@.service -#install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/pkg-scripts/athena-ice-server.service -#install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/pkg-scripts/athena-ice-server@.service -install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/pkg-scripts/athena-server.target -install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/pkg-scripts/athena-server@.target -cp -a $ATHENA/source/domain-server/resources $RPM_BUILD_ROOT/opt/athena -cp -a $ATHENA/build/assignment-client/plugins $RPM_BUILD_ROOT/opt/athena -chrpath -d $RPM_BUILD_ROOT/opt/athena/plugins/*.so -chrpath -d $RPM_BUILD_ROOT/opt/athena/plugins/*/*.so -strip --strip-all $RPM_BUILD_ROOT/opt/athena/plugins/*.so -strip --strip-all $RPM_BUILD_ROOT/opt/athena/plugins/*/*.so -find $RPM_BUILD_ROOT/opt/athena/resources -name ".gitignore" -delete - - -%files -%license $ATHENA/source/LICENSE -/opt/athena -/usr/lib/systemd/system - - -%changelog - - -%post -# create users -getent passwd athena >/dev/numm 2>&1 || useradd -r -c "Project Athena" -d /var/lib/athena -U -M athena -#getent group athena >/dev/null 2>&1 || groupadd -r athena - -# create data folder -mkdir -p /etc/opt/athena -mkdir -p /var/lib/athena && chown athena:athena /var/lib/athena && chmod 775 /var/lib/athena - -ldconfig -n /opt/athena/lib -if [ ! -d "/var/lib/athena/default" ]; then - /opt/athena/new-server default 40100 - systemctl enable athena-server@default.target - systemctl start athena-server@default.target -fi - -%systemd_post athena-assignment-client.service -%systemd_post athena-assignment-client@.service -%systemd_post athena-domain-server.service -%systemd_post athena-domain-server@.service -#%systemd_post athena-ice-server.service -#%systemd_post athena-ice-server@.service -%systemd_post athena-server.target -%systemd_post athena-server@.target - - -%preun -%systemd_preun athena-server.target -%systemd_preun athena-server@.target -%systemd_preun athena-assignment-client.service -%systemd_preun athena-assignment-client@.service -%systemd_preun athena-domain-server.service -%systemd_preun athena-domain-server@.service -#%systemd_preun athena-ice-server.service -#%systemd_preun athena-ice-server@.service - - -%postun -%systemd_postun_with_restart athena-server.target -%systemd_postun_with_restart athena-server@.target -%systemd_postun_with_restart athena-assignment-client.service -%systemd_postun_with_restart athena-assignment-client@.service -%systemd_postun_with_restart athena-domain-server.service -%systemd_postun_with_restart athena-domain-server@.service -#%systemd_postun_with_restart athena-ice-server.service -#%systemd_postun_with_restart athena-ice-server@.service diff --git a/pkg-scripts/athena-server.target b/pkg-scripts/athena-server.target deleted file mode 100644 index e3929b401b..0000000000 --- a/pkg-scripts/athena-server.target +++ /dev/null @@ -1,11 +0,0 @@ -[Unit] -Description=Athena virtual domain -Wants=athena-assignment-client.service -Wants=athena-domain-server.service -#Wants=athena-ice-server.service -After=athena-assignment-client.service -After=athena-domain-server.service -#After=athena-ice-server.service - -[Install] -WantedBy=multi-user.target diff --git a/pkg-scripts/athena-server@.target b/pkg-scripts/athena-server@.target deleted file mode 100644 index 8ac451ca80..0000000000 --- a/pkg-scripts/athena-server@.target +++ /dev/null @@ -1,11 +0,0 @@ -[Unit] -Description=Athena virtual domain -Wants=athena-assignment-client@%i.service -Wants=athena-domain-server@%i.service -#Wants=athena-ice-server@%i.service -After=athena-assignment-client@%i.service -After=athena-domain-server@%i.service -#After=athena-ice-server@%i.service - -[Install] -WantedBy=multi-user.target diff --git a/pkg-scripts/docker-entrypoint.sh b/pkg-scripts/docker-entrypoint.sh index 4a4a7506dc..9248152f32 100755 --- a/pkg-scripts/docker-entrypoint.sh +++ b/pkg-scripts/docker-entrypoint.sh @@ -6,23 +6,23 @@ set -x # allowing the container to be run directly as Jenkins. In Dev, or on unknown # environments, run the container as root to automatically correct docker # group in container to match the docker.sock GID mounted from the host. -if [ -f /var/lib/athena/.local -a "$(id -u)" = "0" ]; then +if [ -f /var/lib/vircadia/.local -a "$(id -u)" = "0" ]; then # realign gid - THIS_ATHENA_GID=`ls -ngd /var/lib/athena/.local | cut -f3 -d' '` - CUR_ATHENA_GID=`getent group athena | cut -f3 -d: || true` - if [ ! -z "$THIS_ATHENA_GID" -a "$THIS_ATHENA_GID" != "$CUR_ATHENA_GID" ]; then - groupmod -g ${THIS_ATHENA_GID} -o athena + THIS_VIRCADIA_GID=`ls -ngd /var/lib/vircadia/.local | cut -f3 -d' '` + CUR_VIRCADIA_GID=`getent group vircadia | cut -f3 -d: || true` + if [ ! -z "$THIS_VIRCADIA_GID" -a "$THIS_VIRCADIA_GID" != "$CUR_VIRCADIA_GID" ]; then + groupmod -g ${THIS_VIRCADIA_GID} -o vircadia fi # realign pid - THIS_ATHENA_PID=`ls -nd /var/lib/athena/.local | cut -f3 -d' '` - CUR_ATHENA_PID=`getent passwd athena | cut -f3 -d: || true` - if [ ! -z "$THIS_ATHENA_PID" -a "$THIS_ATHENA_PID" != "$CUR_ATHENA_PID" ]; then - usermod -u ${THIS_ATHENA_PID} -o athena + THIS_ATHENA_PID=`ls -nd /var/lib/vircadia/.local | cut -f3 -d' '` + CUR_ATHENA_PID=`getent passwd vircadia | cut -f3 -d: || true` + if [ ! -z "$THIS_VIRCADIA_PID" -a "$THIS_VIRCADIA_PID" != "$CUR_VIRCADIA_PID" ]; then + usermod -u ${THIS_VIRCADIA_PID} -o vircadia fi - if ! groups athena | grep -q athena; then - usermod -aG athena athena + if ! groups vircadia | grep -q vircadia; then + usermod -aG vircadia vircadia fi fi diff --git a/pkg-scripts/docker-athena-supervisor.conf b/pkg-scripts/docker-vircadia-supervisor.conf similarity index 60% rename from pkg-scripts/docker-athena-supervisor.conf rename to pkg-scripts/docker-vircadia-supervisor.conf index d6e53996b6..3ee1961c80 100644 --- a/pkg-scripts/docker-athena-supervisor.conf +++ b/pkg-scripts/docker-vircadia-supervisor.conf @@ -1,74 +1,74 @@ [supervisord] -user=athena +user=vircadia nodaemon=true -environment=HOME="/var/lib/athena",USER="athena",LD_LIBRARY_PATH="/opt/athena/lib" +environment=HOME="/var/lib/vircadia",USER="vircadia",LD_LIBRARY_PATH="/opt/vircadia/lib" logfile=/dev/stdout logfile_maxbytes=0 pidfile=/var/run/supervisord.pid [program:domain-server] -command=/opt/athena/domain-server +command=/opt/vircadia/domain-server autorestart=unexpected -directory=/opt/athena +directory=/opt/vircadia [program:audio-mixer] -command=/opt/athena/assignment-client -t 0 -a localhost -p 48000 +command=/opt/vircadia/assignment-client -t 0 -a localhost -p 48000 autorestart=unexpected -directory=/opt/athena +directory=/opt/vircadia stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0 [program:avatar-mixer] -command=/opt/athena/assignment-client -t 1 -a localhost -p 48001 +command=/opt/vircadia/assignment-client -t 1 -a localhost -p 48001 autorestart=unexpected -directory=/opt/athena +directory=/opt/vircadia stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0 [program:entities-server] -command=/opt/athena/assignment-client -t 6 -a localhost -p 48006 +command=/opt/vircadia/assignment-client -t 6 -a localhost -p 48006 autorestart=unexpected -directory=/opt/athena +directory=/opt/vircadia stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0 [program:asset-server] -command=/opt/athena/assignment-client -t 3 -a localhost -p 48003 +command=/opt/vircadia/assignment-client -t 3 -a localhost -p 48003 autorestart=unexpected -directory=/opt/athena +directory=/opt/vircadia stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0 [program:entity-script-server] -command=/opt/athena/assignment-client -t 5 -a localhost -p 48005 +command=/opt/vircadia/assignment-client -t 5 -a localhost -p 48005 autorestart=unexpected -directory=/opt/athena +directory=/opt/vircadia stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0 [program:messages-mixer] -command=/opt/athena/assignment-client -t 4 -a localhost -p 48004 +command=/opt/vircadia/assignment-client -t 4 -a localhost -p 48004 autorestart=unexpected -directory=/opt/athena +directory=/opt/vircadia stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0 [program:scripted-agent] -command=/opt/athena/assignment-client -t 2 -a localhost --max 100 +command=/opt/vircadia/assignment-client -t 2 -a localhost --max 100 autorestart=unexpected -directory=/opt/athena +directory=/opt/vircadia stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr diff --git a/pkg-scripts/make-deb-server b/pkg-scripts/make-deb-server index 72304ae414..70eda96411 100755 --- a/pkg-scripts/make-deb-server +++ b/pkg-scripts/make-deb-server @@ -10,7 +10,7 @@ VERSION=0.86.0-k2-$GITDATE-$GITCOMMIT sudo apt-get install chrpath binutils dh-make -DEB_BUILD_ROOT=temp-make-deb/athena-server-$VERSION-0ubuntu1 +DEB_BUILD_ROOT=temp-make-deb/vircadia-server-$VERSION-0ubuntu1 rm -r temp-make-deb mkdir -p $DEB_BUILD_ROOT @@ -45,56 +45,47 @@ strip --strip-all $DEB_BUILD_ROOT/plugins/*/*.so #begin the debian package construction cd $DEB_BUILD_ROOT -dh_make -p athena-server_$VERSION-0ubuntu1 -c apache -s --createorig -y +dh_make -p vircadia-server_$VERSION-0ubuntu1 -c apache -s --createorig -y -cp $ATHENA/source/pkg-scripts/athena-assignment-client.service debian -cp $ATHENA/source/pkg-scripts/athena-assignment-client@.service debian -cp $ATHENA/source/pkg-scripts/athena-domain-server.service debian -cp $ATHENA/source/pkg-scripts/athena-domain-server@.service debian -#cp $ATHENA/source/pkg-scripts/athena-ice-server.service debian -#cp $ATHENA/source/pkg-scripts/athena-ice-server@.service debian -cp $ATHENA/source/pkg-scripts/athena-server.target debian -cp $ATHENA/source/pkg-scripts/athena-server@.target debian +cp $ATHENA/source/pkg-scripts/vircadia-assignment-client.service debian +cp $ATHENA/source/pkg-scripts/vircadia-assignment-client@.service debian +cp $ATHENA/source/pkg-scripts/vircadia-domain-server.service debian +cp $ATHENA/source/pkg-scripts/vircadia-domain-server@.service debian +#cp $ATHENA/source/pkg-scripts/vircadia-ice-server.service debian +#cp $ATHENA/source/pkg-scripts/vircadia-ice-server@.service debian +cp $ATHENA/source/pkg-scripts/vircadia-server.target debian +cp $ATHENA/source/pkg-scripts/vircadia-server@.target debian cp $ATHENA/source/pkg-scripts/server-control debian/control cp $ATHENA/source/pkg-scripts/server-prerm debian/prerm cp $ATHENA/source/pkg-scripts/server-postinst debian/postinst cp $ATHENA/source/LICENSE debian/copyright -echo /etc/opt/athena > debian/dirs -echo /var/lib/athena >> debian/dirs +echo /etc/opt/vircadia > debian/dirs +echo /var/lib/vircadia >> debian/dirs echo README.md > debian/docs echo README_hifi.md >> debian/docs -echo assignment-client opt/athena > debian/install -echo domain-server opt/athena >> debian/install -echo oven opt/athena >> debian/install -#echo ice-server opt/athena >> debian/install -echo new-server opt/athena >> debian/install +echo assignment-client opt/vircadia > debian/install +echo domain-server opt/vircadia >> debian/install +echo oven opt/vircadia >> debian/install +#echo ice-server opt/vircadia >> debian/install +echo new-server opt/vircadia >> debian/install for so in *.so.*.*.*; do - echo $so opt/athena/lib >> debian/install + echo $so opt/vircadia/lib >> debian/install done for so in *.so; do - echo $so opt/athena/lib >> debian/install + echo $so opt/vircadia/lib >> debian/install done #for service in *.service; do -# echo $service opt/athena/systemd >> debian/install +# echo $service opt/vircadia/systemd >> debian/install #done #for target in *.target; do -# echo $target opt/athena/systemd >> debian/install +# echo $target opt/vircadia/systemd >> debian/install #done -find resources -type f -exec sh -c 'echo {} opt/athena/$(dirname "{}") >> debian/install' \; -find plugins -type f -exec sh -c 'echo {} opt/athena/$(dirname "{}") >> debian/install' \; - -#echo usr/lib/systemd/system/athena-assignment-client.service opt/athena/systemd/athena-assignment-client.service > debian/athena-server.links -#echo usr/lib/systemd/system/athena-assignment-client@.service opt/athena/systemd/athena-assignment-client@.service >> debian/athena-server.links -#echo usr/lib/systemd/system/athena-domain-server.service opt/athena/systemd/athena-domain-server.service >> debian/athena-server.links -#echo usr/lib/systemd/system/athena-domain-server@.service opt/athena/systemd/athena-domain-server@.service >> debian/athena-server.links -##echo usr/lib/systemd/system/athena-ice-server.service opt/athena/systemd/athena-ice-server.service >> debian/athena-server.links -##echo usr/lib/systemd/system/athena-ice-server@.service opt/athena/systemd/athena-ice-server@.service >> debian/athena-server.links -#echo usr/lib/systemd/system/athena-server.target opt/athena/systemd/athena-server.target >> debian/athena-server.links -#echo usr/lib/systemd/system/athena-server@.target opt/athena/systemd/athena-server@.target >> debian/athena-server.links +find resources -type f -exec sh -c 'echo {} opt/vircadia/$(dirname "{}") >> debian/install' \; +find plugins -type f -exec sh -c 'echo {} opt/vircadia/$(dirname "{}") >> debian/install' \; SOFILES=`ls *.so *.so.*.*.* | sed 's/\./\\\./g' | paste -d'|' -s` diff --git a/pkg-scripts/make-docker-server b/pkg-scripts/make-docker-server index 3ad37bb0e2..90d4434a03 100755 --- a/pkg-scripts/make-docker-server +++ b/pkg-scripts/make-docker-server @@ -15,7 +15,7 @@ rm -r temp-make-dock mkdir -p $DOCK_BUILD_ROOT cp $ATHENA/source/pkg-scripts/Dockerfile.templ $DOCK_BUILD_ROOT/Dockerfile cp $ATHENA/source/pkg-scripts/docker-entrypoint.sh $DOCK_BUILD_ROOT/entrypoint.sh -cp $ATHENA/source/pkg-scripts/docker-athena-supervisor.conf $DOCK_BUILD_ROOT/athena.conf +cp $ATHENA/source/pkg-scripts/docker-vircadia-supervisor.conf $DOCK_BUILD_ROOT/vircadia.conf # copy the files over mkdir -p $DOCK_BUILD_ROOT/opt @@ -57,4 +57,4 @@ SOFILES=`ls $DOCK_BUILD_ROOT/lib | sed 's/\./\\\./g' | paste -d'|' -s` DEPENDS=`find $DOCK_BUILD_ROOT/opt $DOCK_BUILD_ROOT/lib -type f -executable -exec sh -c 'objdump -p {} | grep NEEDED' \; | awk '{print $2}' | sort | uniq | egrep -v "^($SOFILES)$" | xargs -n 1 -I {} sh -c 'dpkg -S {} | head -n 1' | cut -d ':' -f 1 | sort | uniq | paste -d' ' -s` cd $DOCK_BUILD_ROOT -docker build -t odysseus654/athena-server --build-arg "DEPENDS=$DEPENDS" --build-arg "GITSRC=$GITSRC" --build-arg "GITDATE=$GITDATE" --build-arg "GITCOMMIT=$GITCOMMIT" . +docker build -t odysseus654/vircadia-server --build-arg "DEPENDS=$DEPENDS" --build-arg "GITSRC=$GITSRC" --build-arg "GITDATE=$GITDATE" --build-arg "GITCOMMIT=$GITCOMMIT" . diff --git a/pkg-scripts/make-rpm-server b/pkg-scripts/make-rpm-server index 9863faa0ab..6b6ebd6ae2 100755 --- a/pkg-scripts/make-rpm-server +++ b/pkg-scripts/make-rpm-server @@ -52,5 +52,5 @@ DEPENDS=mesa-libGL,`ls \ sudo yum install chrpath export VERSION DEPENDS ATHENA -rpmbuild --target x86_64 -bb ./athena-server.spec +rpmbuild --target x86_64 -bb ./vircadia-server.spec mv ~/rpmbuild/RPMS/x86_64/*.rpm . diff --git a/pkg-scripts/new-server b/pkg-scripts/new-server index fd9ba95761..22d6c0c9e8 100755 --- a/pkg-scripts/new-server +++ b/pkg-scripts/new-server @@ -2,13 +2,13 @@ if [ -z "$1" ] || [ -z "$2" ]; then echo "new-server {name} {base-port}" echo - echo "Sets up a new athena server with the specified name and base port number" + echo "Sets up a new vircadia server with the specified name and base port number" echo " {name} - a simple name used to identify the server to scripts (not used in the server configuration)" echo " {base-port} - the base port number (default server is 40100). The metaverse port will be {base-port}+2" echo " Four contiguous port numbers are allocated, these must not overlap with other running services on this machine" echo echo "Launching a server created by this script is done with:" - echo " sudo systemctl start athena-server@{name}.target" + echo " sudo systemctl start vircadia-server@{name}.target" echo exit 1 fi @@ -20,30 +20,32 @@ if [ "$(id -u)" -ne 0 ]; then exit 1 fi -if [ -d "/var/lib/athena/$1" ]; then - echo "Path /var/lib/athena/$1 already exists" +if [ -d "/var/lib/vircadia/$1" ]; then + echo "Path /var/lib/vircadia/$1 already exists" echo echo "Please remove this path first if you wish to recreate this server" exit 2 fi -mkdir -p /var/lib/athena/$1/.local/share -ln -s ../.. /var/lib/athena/$1/.local/share/Project\ Athena\ -\ dev -ln -s ../.. /var/lib/athena/$1/.local/share/Project\ Athena -mkdir -p /var/lib/athena/$1/domain-server -echo "{\"metaverse\": {\"local_port\": $(($2 + 2))},\"version\": 2.4}" > /var/lib/athena/$1/domain-server/config.json -chown -R athena.athena /var/lib/athena/$1 +mkdir -p /var/lib/vircadia/$1/.local/share +ln -s ../.. /var/lib/vircadia/$1/.local/share/Project\ Athena\ -\ dev +ln -s ../.. /var/lib/vircadia/$1/.local/share/Project\ Athena +ln -s ../.. /var/lib/vircadia/$1/.local/share/Vircadia\ -\ dev +ln -s ../.. /var/lib/vircadia/$1/.local/share/Vircadia +mkdir -p /var/lib/vircadia/$1/domain-server +echo "{\"metaverse\": {\"local_port\": $(($2 + 2))},\"version\": 2.4}" > /var/lib/vircadia/$1/domain-server/config.json +chown -R vircadia.vircadia /var/lib/vircadia/$1 -echo HIFI_DOMAIN_SERVER_HTTP_PORT=$2 > /etc/opt/athena/$1.conf -echo HIFI_DOMAIN_SERVER_HTTPS_PORT=$(($2 + 1)) >> /etc/opt/athena/$1.conf -echo HIFI_DOMAIN_SERVER_PORT=$(($2 + 2)) >> /etc/opt/athena/$1.conf -echo HIFI_DOMAIN_SERVER_DTLS_PORT=$(($2 + 3)) >> /etc/opt/athena/$1.conf +echo HIFI_DOMAIN_SERVER_HTTP_PORT=$2 > /etc/opt/vircadia/$1.conf +echo HIFI_DOMAIN_SERVER_HTTPS_PORT=$(($2 + 1)) >> /etc/opt/vircadia/$1.conf +echo HIFI_DOMAIN_SERVER_PORT=$(($2 + 2)) >> /etc/opt/vircadia/$1.conf +echo HIFI_DOMAIN_SERVER_DTLS_PORT=$(($2 + 3)) >> /etc/opt/vircadia/$1.conf -echo "A new athena server has been created with the name of '$1'" +echo "A new vircadia server has been created with the name of '$1'" echo echo "To launch it:" -echo " sudo systemctl start athena-server@$1.target" +echo " sudo systemctl start vircadia-server@$1.target" echo "To have it launch at system start:" -echo " sudo systemctl enable athena-server@$1.target" +echo " sudo systemctl enable vircadia-server@$1.target" echo "The server configuration console is available at:" echo " http://localhost:$2" diff --git a/pkg-scripts/server-control b/pkg-scripts/server-control index 70383891bd..2c37da268a 100644 --- a/pkg-scripts/server-control +++ b/pkg-scripts/server-control @@ -1,4 +1,4 @@ -Source: athena-server +Source: vircadia-server Section: comm Priority: optional Maintainer: Heather Anderson @@ -8,8 +8,8 @@ Homepage: https://www.projectathena.dev Vcs-Git: https://github.com/kasenvr/project-athena.git Vcs-Browser: https://github.com/kasenvr/project-athena -Package: athena-server +Package: vircadia-server Architecture: any Depends: adduser, {DEPENDS} -Description: Project Athena allows creation and sharing of VR experiences. - The Project Athena metaverse provides built-in social features, including avatar interactions, spatialized audio and interactive physics. Additionally, you have the ability to import any 3D object into your virtual environment. +Description: Vircadia allows creation and sharing of VR experiences. + The Vircadia metaverse provides built-in social features, including avatar interactions, spatialized audio and interactive physics. Additionally, you have the ability to import any 3D object into your virtual environment. diff --git a/pkg-scripts/server-postinst b/pkg-scripts/server-postinst index fa14e8175f..b115e7a778 100755 --- a/pkg-scripts/server-postinst +++ b/pkg-scripts/server-postinst @@ -1,5 +1,5 @@ #!/bin/sh -# postinst script for athena-server +# postinst script for vircadia-server # # see: dh_installdeb(1) @@ -20,20 +20,20 @@ set -e case "$1" in configure) - ldconfig -n /opt/athena/lib - adduser --system --quiet --gecos "Project Athena" --home /var/lib/athena --group --no-create-home athena - mkdir -p /var/lib/athena - chown athena:athena /var/lib/athena - chmod 775 /var/lib/athena - if [ ! -d "/var/lib/athena/default" ]; then - /opt/athena/new-server default 40100 - systemctl enable athena-server@default.target - systemctl start athena-server@default.target + ldconfig -n /opt/vircadia/lib + adduser --system --quiet --gecos "Vircadia" --home /var/lib/vircadia --group --no-create-home vircadia + mkdir -p /var/lib/vircadia + chown vircadia:vircadia /var/lib/vircadia + chmod 775 /var/lib/vircadia + if [ ! -d "/var/lib/vircadia/default" ]; then + /opt/vircadia/new-server default 40100 + systemctl enable vircadia-server@default.target + systemctl start vircadia-server@default.target fi ;; abort-remove|abort-deconfigure) - ldconfig -n /opt/athena/lib + ldconfig -n /opt/vircadia/lib ;; abort-upgrade) diff --git a/pkg-scripts/server-prerm b/pkg-scripts/server-prerm index cdeddd308e..7a6538284b 100755 --- a/pkg-scripts/server-prerm +++ b/pkg-scripts/server-prerm @@ -1,5 +1,5 @@ #!/bin/sh -# prerm script for athena-server +# prerm script for vircadia-server # # see: dh_installdeb(1) @@ -19,7 +19,7 @@ set -e case "$1" in remove) - find -P /opt/athena/lib -type l -delete + find -P /opt/vircadia/lib -type l -delete ;; upgrade|deconfigure) diff --git a/pkg-scripts/server-rules b/pkg-scripts/server-rules index 4585591b15..24f557159b 100755 --- a/pkg-scripts/server-rules +++ b/pkg-scripts/server-rules @@ -18,26 +18,26 @@ dh $@ --with=systemd override_dh_systemd_enable: - dh_systemd_enable --no-enable --name athena-assignment-client athena-assignment-client.service - dh_systemd_enable --no-enable --name athena-assignment-client@ athena-assignment-client@.service - dh_systemd_enable --no-enable --name athena-domain-server athena-domain-server.service - dh_systemd_enable --no-enable --name athena-domain-server@ athena-domain-server@.service - #dh_systemd_enable --no-enable --name athena-ice-server athena-ice-server.service - #dh_systemd_enable --no-enable --name athena-ice-server@ athena-ice-server@.service - dh_systemd_enable --no-enable --name athena-server athena-server.target - dh_systemd_enable --no-enable --name athena-server@ athena-server@.target - #dh_systemd_enable --name athena-server@default athena-server@default.target + dh_systemd_enable --no-enable --name vircadia-assignment-client vircadia-assignment-client.service + dh_systemd_enable --no-enable --name vircadia-assignment-client@ vircadia-assignment-client@.service + dh_systemd_enable --no-enable --name vircadia-domain-server vircadia-domain-server.service + dh_systemd_enable --no-enable --name vircadia-domain-server@ vircadia-domain-server@.service + #dh_systemd_enable --no-enable --name vircadia-ice-server vircadia-ice-server.service + #dh_systemd_enable --no-enable --name vircadia-ice-server@ vircadia-ice-server@.service + dh_systemd_enable --no-enable --name vircadia-server vircadia-server.target + dh_systemd_enable --no-enable --name vircadia-server@ vircadia-server@.target + #dh_systemd_enable --name vircadia-server@default vircadia-server@default.target override_dh_systemd_start: - dh_systemd_start --restart-after-upgrade --no-start athena-assignment-client.service - dh_systemd_start --restart-after-upgrade --no-start athena-assignment-client@.service - dh_systemd_start --restart-after-upgrade --no-start athena-domain-server.service - dh_systemd_start --restart-after-upgrade --no-start athena-domain-server@.service - #dh_systemd_start --restart-after-upgrade --no-start athena-ice-server.service - #dh_systemd_start --restart-after-upgrade --no-start athena-ice-server@.service - dh_systemd_start --restart-after-upgrade --no-start athena-server.target - dh_systemd_start --restart-after-upgrade --no-start athena-server@.target - #dh_systemd_start --restart-after-upgrade athena-server@default.target + dh_systemd_start --restart-after-upgrade --no-start vircadia-assignment-client.service + dh_systemd_start --restart-after-upgrade --no-start vircadia-assignment-client@.service + dh_systemd_start --restart-after-upgrade --no-start vircadia-domain-server.service + dh_systemd_start --restart-after-upgrade --no-start vircadia-domain-server@.service + #dh_systemd_start --restart-after-upgrade --no-start vircadia-ice-server.service + #dh_systemd_start --restart-after-upgrade --no-start vircadia-ice-server@.service + dh_systemd_start --restart-after-upgrade --no-start vircadia-server.target + dh_systemd_start --restart-after-upgrade --no-start vircadia-server@.target + #dh_systemd_start --restart-after-upgrade vircadia-server@default.target override_dh_installinit: dh_installinit --noscripts diff --git a/pkg-scripts/vircadia-assignment-client.service b/pkg-scripts/vircadia-assignment-client.service new file mode 100644 index 0000000000..9c86e4e874 --- /dev/null +++ b/pkg-scripts/vircadia-assignment-client.service @@ -0,0 +1,18 @@ +[Unit] +Description=Assignment client service for Vircadia server +After=network.target +PartOf=vircadia-server.target + +[Service] +Restart=always + +WorkingDirectory=/opt/vircadia +Environment="LD_LIBRARY_PATH=/opt/vircadia/lib" +User=vircadia +Group=vircadia +#LimitCORE=infinity +#ExecStart=/opt/vircadia/assignment-client -n 6 +ExecStart=/opt/vircadia/assignment-client --min 6 --max 20 + +[Install] +WantedBy=multi-user.target diff --git a/pkg-scripts/vircadia-assignment-client@.service b/pkg-scripts/vircadia-assignment-client@.service new file mode 100644 index 0000000000..4684947426 --- /dev/null +++ b/pkg-scripts/vircadia-assignment-client@.service @@ -0,0 +1,20 @@ +[Unit] +Description=Assignment client service for Vircadia server +After=network.target +PartOf=vircadia-server@%i.target + +[Service] +Restart=always + +WorkingDirectory=/opt/vircadia +EnvironmentFile=/etc/opt/vircadia/%i.conf +Environment="LD_LIBRARY_PATH=/opt/vircadia/lib" "HOME=/var/lib/vircadia/%i" +PrivateTmp=true +User=vircadia +Group=vircadia +#LimitCORE=infinity +#ExecStart=/opt/vircadia/assignment-client -n 6 +ExecStart=/opt/vircadia/assignment-client --min 6 --max 20 --server-port $HIFI_DOMAIN_SERVER_PORT + +[Install] +WantedBy=multi-user.target diff --git a/pkg-scripts/vircadia-domain-server.service b/pkg-scripts/vircadia-domain-server.service new file mode 100644 index 0000000000..8c261bc72f --- /dev/null +++ b/pkg-scripts/vircadia-domain-server.service @@ -0,0 +1,17 @@ +[Unit] +Description=Domain Server service for Vircadia +After=network.target +PartOf=vircadia-server.target + +[Service] +Restart=on-failure + +WorkingDirectory=/opt/vircadia +Environment="LD_LIBRARY_PATH=/opt/vircadia/lib" +User=vircadia +Group=vircadia +#LimitCORE=infinity +ExecStart=/opt/vircadia/domain-server + +[Install] +WantedBy=multi-user.target diff --git a/pkg-scripts/vircadia-domain-server@.service b/pkg-scripts/vircadia-domain-server@.service new file mode 100644 index 0000000000..7ae84dc6f3 --- /dev/null +++ b/pkg-scripts/vircadia-domain-server@.service @@ -0,0 +1,19 @@ +[Unit] +Description=Domain Server service for Vircadia +After=network.target +PartOf=vircadia-server@%i.target + +[Service] +Restart=on-failure + +WorkingDirectory=/opt/vircadia +EnvironmentFile=/etc/opt/vircadia/%i.conf +Environment="LD_LIBRARY_PATH=/opt/vircadia/lib" "HOME=/var/lib/vircadia/%i" +PrivateTmp=true +User=vircadia +Group=vircadia +#LimitCORE=infinity +ExecStart=/opt/vircadia/domain-server + +[Install] +WantedBy=multi-user.target diff --git a/pkg-scripts/athena-ice-server.service b/pkg-scripts/vircadia-ice-server.service similarity index 63% rename from pkg-scripts/athena-ice-server.service rename to pkg-scripts/vircadia-ice-server.service index 57db8581b3..d966ffe0c0 100644 --- a/pkg-scripts/athena-ice-server.service +++ b/pkg-scripts/vircadia-ice-server.service @@ -1,18 +1,18 @@ [Unit] -Description=Ice Server service for Athena +Description=Ice Server service for Vircadia After=network.target -PartOf=athena-server.target +PartOf=vircadia-server.target [Service] Restart=on-failure -Environment="HIFI_ENVIRONMENT=production" "LD_LIBRARY_PATH=/opt/athena/lib" -WorkingDirectory=/opt/athena -User=athena -Group=athena +Environment="HIFI_ENVIRONMENT=production" "LD_LIBRARY_PATH=/opt/vircadia/lib" +WorkingDirectory=/opt/vircadia +User=vircadia +Group=vircadia #ExecStartPre=/bin/bash -c 'if /usr/bin/pgrep -l ice-server; then /usr/bin/pkill -SIGKILL -f /usr/share/hifi/ice-server/ice-server; fi' #LimitCORE=infinity -ExecStart=/opt/athena/ice-server +ExecStart=/opt/vircadia/ice-server [Install] WantedBy=multi-user.target diff --git a/pkg-scripts/athena-ice-server@.service b/pkg-scripts/vircadia-ice-server@.service similarity index 56% rename from pkg-scripts/athena-ice-server@.service rename to pkg-scripts/vircadia-ice-server@.service index e4993f5436..fc5ab4615d 100644 --- a/pkg-scripts/athena-ice-server@.service +++ b/pkg-scripts/vircadia-ice-server@.service @@ -1,20 +1,20 @@ [Unit] -Description=Ice Server service for Athena +Description=Ice Server service for Vircadia After=network.target -PartOf=athena-server@%i.target +PartOf=vircadia-server@%i.target [Service] Restart=on-failure -EnvironmentFile=/etc/opt/athena/%i.conf -Environment="HIFI_ENVIRONMENT=production" "LD_LIBRARY_PATH=/opt/athena/lib" "HOME=/var/lib/athena/%i" +EnvironmentFile=/etc/opt/vircadia/%i.conf +Environment="HIFI_ENVIRONMENT=production" "LD_LIBRARY_PATH=/opt/vircadia/lib" "HOME=/var/lib/vircadia/%i" PrivateTmp=true -WorkingDirectory=/opt/athena -User=athena -Group=athena +WorkingDirectory=/opt/vircadia +User=vircadia +Group=vircadia #ExecStartPre=/bin/bash -c 'if /usr/bin/pgrep -l ice-server; then /usr/bin/pkill -SIGKILL -f /usr/share/hifi/ice-server/ice-server; fi' #LimitCORE=infinity -ExecStart=/opt/athena/ice-server +ExecStart=/opt/vircadia/ice-server [Install] WantedBy=multi-user.target diff --git a/pkg-scripts/vircadia-server.spec b/pkg-scripts/vircadia-server.spec new file mode 100644 index 0000000000..82126f493f --- /dev/null +++ b/pkg-scripts/vircadia-server.spec @@ -0,0 +1,128 @@ +#ATHENA=~/Athena rpmbuild --target x86_64 -bb vircadia-server.spec +%define version %{lua:print(os.getenv("VERSION"))} +%define depends %{lua:print(os.getenv("DEPENDS"))} + +Name: vircadia-server +Version: %{version} +Release: 1%{?dist} +Summary: Vircadia metaverse platform, based on the High Fidelity Engine. + +License: ASL 2.0 +URL: https://projectathena.io +Source0: https://github.com/daleglass/athena-builder/blob/master/athena_builder + +#BuildRequires: systemd-rpm-macros +BuildRequires: chrpath +Requires: %{depends} +BuildArch: x86_64 +AutoReq: no +AutoProv: no + +%description +Vircadia allows creation and sharing of VR experiences. + The Vircadia metaverse provides built-in social features, including avatar interactions, spatialized audio and interactive physics. Additionally, you have the ability to import any 3D object into your virtual environment. + + +%prep + + +%build + + +%install +rm -rf $RPM_BUILD_ROOT +install -d $RPM_BUILD_ROOT/opt/vircadia +install -m 0755 -t $RPM_BUILD_ROOT/opt/vircadia $ATHENA/build/assignment-client/assignment-client +install -m 0755 -t $RPM_BUILD_ROOT/opt/vircadia $ATHENA/build/domain-server/domain-server +install -m 0755 -t $RPM_BUILD_ROOT/opt/vircadia $ATHENA/build/tools/oven/oven +#install -m 0755 -t $RPM_BUILD_ROOT/opt/vircadia $ATHENA/build/ice-server/ice-server +strip --strip-all $RPM_BUILD_ROOT/opt/vircadia/* +chrpath -d $RPM_BUILD_ROOT/opt/vircadia/* +install -m 0755 -t $RPM_BUILD_ROOT/opt/vircadia $ATHENA/source/pkg-scripts/new-server +install -d $RPM_BUILD_ROOT/opt/vircadia/lib +install -m 0644 -t $RPM_BUILD_ROOT/opt/vircadia/lib $ATHENA/build/libraries/*/*.so +strip --strip-all $RPM_BUILD_ROOT/opt/vircadia/lib/* +chrpath -d $RPM_BUILD_ROOT/opt/vircadia/lib/* +install -m 0644 -t $RPM_BUILD_ROOT/opt/vircadia/lib $ATHENA/qt5-install/lib/libQt5Network.so.*.*.* +install -m 0644 -t $RPM_BUILD_ROOT/opt/vircadia/lib $ATHENA/qt5-install/lib/libQt5Core.so.*.*.* +install -m 0644 -t $RPM_BUILD_ROOT/opt/vircadia/lib $ATHENA/qt5-install/lib/libQt5Widgets.so.*.*.* +install -m 0644 -t $RPM_BUILD_ROOT/opt/vircadia/lib $ATHENA/qt5-install/lib/libQt5Gui.so.*.*.* +install -m 0644 -t $RPM_BUILD_ROOT/opt/vircadia/lib $ATHENA/qt5-install/lib/libQt5Script.so.*.*.* +install -m 0644 -t $RPM_BUILD_ROOT/opt/vircadia/lib $ATHENA/qt5-install/lib/libQt5Quick.so.*.*.* +install -m 0644 -t $RPM_BUILD_ROOT/opt/vircadia/lib $ATHENA/qt5-install/lib/libQt5WebSockets.so.*.*.* +install -m 0644 -t $RPM_BUILD_ROOT/opt/vircadia/lib $ATHENA/qt5-install/lib/libQt5Qml.so.*.*.* +install -m 0644 -t $RPM_BUILD_ROOT/opt/vircadia/lib $ATHENA/qt5-install/lib/libQt5ScriptTools.so.*.*.* +install -m 0644 -t $RPM_BUILD_ROOT/opt/vircadia/lib $ATHENA/build/ext/makefiles/quazip/project/lib/libquazip5.so.*.*.* +install -d $RPM_BUILD_ROOT/usr/lib/systemd/system +install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/pkg-scripts/vircadia-assignment-client.service +install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/pkg-scripts/vircadia-assignment-client@.service +install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/pkg-scripts/vircadia-domain-server.service +install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/pkg-scripts/vircadia-domain-server@.service +#install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/pkg-scripts/vircadia-ice-server.service +#install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/pkg-scripts/vircadia-ice-server@.service +install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/pkg-scripts/vircadia-server.target +install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/pkg-scripts/vircadia-server@.target +cp -a $ATHENA/source/domain-server/resources $RPM_BUILD_ROOT/opt/vircadia +cp -a $ATHENA/build/assignment-client/plugins $RPM_BUILD_ROOT/opt/vircadia +chrpath -d $RPM_BUILD_ROOT/opt/vircadia/plugins/*.so +chrpath -d $RPM_BUILD_ROOT/opt/vircadia/plugins/*/*.so +strip --strip-all $RPM_BUILD_ROOT/opt/vircadia/plugins/*.so +strip --strip-all $RPM_BUILD_ROOT/opt/vircadia/plugins/*/*.so +find $RPM_BUILD_ROOT/opt/vircadia/resources -name ".gitignore" -delete + + +%files +%license $ATHENA/source/LICENSE +/opt/vircadia +/usr/lib/systemd/system + + +%changelog + + +%post +# create users +getent passwd vircadia >/dev/null 2>&1 || useradd -r -c "Vircadia" -d /var/lib/vircadia -U -M vircadia +#getent group vircadia >/dev/null 2>&1 || groupadd -r vircadia + +# create data folder +mkdir -p /etc/opt/vircadia +mkdir -p /var/lib/vircadia && chown vircadia:vircadia /var/lib/vircadia && chmod 775 /var/lib/vircadia + +ldconfig -n /opt/vircadia/lib +if [ ! -d "/var/lib/vircadia/default" ]; then + /opt/vircadia/new-server default 40100 + systemctl enable vircadia-server@default.target + systemctl start vircadia-server@default.target +fi + +%systemd_post vircadia-assignment-client.service +%systemd_post vircadia-assignment-client@.service +%systemd_post vircadia-domain-server.service +%systemd_post vircadia-domain-server@.service +#%systemd_post vircadia-ice-server.service +#%systemd_post vircadia-ice-server@.service +%systemd_post vircadia-server.target +%systemd_post vircadia-server@.target + + +%preun +%systemd_preun vircadia-server.target +%systemd_preun vircadia-server@.target +%systemd_preun vircadia-assignment-client.service +%systemd_preun vircadia-assignment-client@.service +%systemd_preun vircadia-domain-server.service +%systemd_preun vircadia-domain-server@.service +#%systemd_preun vircadia-ice-server.service +#%systemd_preun vircadia-ice-server@.service + + +%postun +%systemd_postun_with_restart vircadia-server.target +%systemd_postun_with_restart vircadia-server@.target +%systemd_postun_with_restart vircadia-assignment-client.service +%systemd_postun_with_restart vircadia-assignment-client@.service +%systemd_postun_with_restart vircadia-domain-server.service +%systemd_postun_with_restart vircadia-domain-server@.service +#%systemd_postun_with_restart vircadia-ice-server.service +#%systemd_postun_with_restart vircadia-ice-server@.service diff --git a/pkg-scripts/vircadia-server.target b/pkg-scripts/vircadia-server.target new file mode 100644 index 0000000000..27225aade3 --- /dev/null +++ b/pkg-scripts/vircadia-server.target @@ -0,0 +1,11 @@ +[Unit] +Description=Vircadia virtual domain +Wants=vircadia-assignment-client.service +Wants=vircadia-domain-server.service +#Wants=vircadia-ice-server.service +After=vircadia-assignment-client.service +After=vircadia-domain-server.service +#After=vircadia-ice-server.service + +[Install] +WantedBy=multi-user.target diff --git a/pkg-scripts/vircadia-server@.target b/pkg-scripts/vircadia-server@.target new file mode 100644 index 0000000000..158a48bedc --- /dev/null +++ b/pkg-scripts/vircadia-server@.target @@ -0,0 +1,11 @@ +[Unit] +Description=Vircadia virtual domain +Wants=vircadia-assignment-client@%i.service +Wants=vircadia-domain-server@%i.service +#Wants=vircadia-ice-server@%i.service +After=vircadia-assignment-client@%i.service +After=vircadia-domain-server@%i.service +#After=vircadia-ice-server@%i.service + +[Install] +WantedBy=multi-user.target From 00e8ce9bb8d7debf1922a7f18ff06b4245448822 Mon Sep 17 00:00:00 2001 From: Heather Anderson Date: Tue, 2 Jun 2020 07:53:05 +0000 Subject: [PATCH 135/160] Initial code pass: - adding migrate-from-athena (copying server state over, launching services) - deletes all server files on purge --- pkg-scripts/deb-functions | 64 +++++++++++++++++++++++++++++++++++++ pkg-scripts/make-deb-server | 1 + pkg-scripts/new-server | 2 -- pkg-scripts/server-postinst | 29 +++++++++++++++-- pkg-scripts/server-postrm | 42 ++++++++++++++++++++++++ 5 files changed, 133 insertions(+), 5 deletions(-) create mode 100644 pkg-scripts/deb-functions create mode 100755 pkg-scripts/server-postrm diff --git a/pkg-scripts/deb-functions b/pkg-scripts/deb-functions new file mode 100644 index 0000000000..9267f37112 --- /dev/null +++ b/pkg-scripts/deb-functions @@ -0,0 +1,64 @@ +#!/bin/sh +# functions to assist with deb management + +getAthenaEnabled() +{ + return systemctl list-units --state=loaded \ + | grep -P "(athena-assignment-client|athena-domain-server|athena-server)" \ + | cut -d' ' -f 1 \ + | xargs -I {} sh -c 'if systemctl is-enabled {} >/dev/null ; then echo {} ; fi' \ + | paste -s -d'|' +} + +getVircadiaEnabled() +{ + return systemctl list-units --state=loaded \ + | grep -P "(vircadia-assignment-client|vircadia-domain-server|vircadia-server)" \ + | cut -d' ' -f 1 \ + | xargs -I {} sh -c 'if systemctl is-enabled {} >/dev/null ; then echo {} ; fi' \ + | paste -s -d'|' +} + +getAthenaActive() +{ + return systemctl list-units \ + | grep -P "(athena-assignment-client|athena-domain-server|athena-server)" \ + | cut -d' ' -f 1 \ + | paste -s -d'|' +} + +getVircadiaActive() +{ + return systemctl list-units \ + | grep -P "(vircadia-assignment-client|vircadia-domain-server|vircadia-server)" \ + | cut -d' ' -f 1 \ + | paste -s -d'|' +} + +disableList() +{ + echo $1 \ + | xargs -d'|' \ + | systemctl disable +} + +enableList() +{ + echo $1 \ + | xargs -d'|' \ + | systemctl enable +} + +stopList() +{ + echo $1 \ + | xargs -d'|' \ + | systemctl stop +} + +startList() +{ + echo $1 \ + | xargs -d'|' \ + | systemctl start +} diff --git a/pkg-scripts/make-deb-server b/pkg-scripts/make-deb-server index 70eda96411..aaa0c2f26f 100755 --- a/pkg-scripts/make-deb-server +++ b/pkg-scripts/make-deb-server @@ -59,6 +59,7 @@ cp $ATHENA/source/pkg-scripts/vircadia-server@.target debian cp $ATHENA/source/pkg-scripts/server-control debian/control cp $ATHENA/source/pkg-scripts/server-prerm debian/prerm cp $ATHENA/source/pkg-scripts/server-postinst debian/postinst +cp $ATHENA/source/pkg-scripts/server-postrm debian/postrm cp $ATHENA/source/LICENSE debian/copyright echo /etc/opt/vircadia > debian/dirs diff --git a/pkg-scripts/new-server b/pkg-scripts/new-server index 22d6c0c9e8..a2ce9b330d 100755 --- a/pkg-scripts/new-server +++ b/pkg-scripts/new-server @@ -28,8 +28,6 @@ if [ -d "/var/lib/vircadia/$1" ]; then fi mkdir -p /var/lib/vircadia/$1/.local/share -ln -s ../.. /var/lib/vircadia/$1/.local/share/Project\ Athena\ -\ dev -ln -s ../.. /var/lib/vircadia/$1/.local/share/Project\ Athena ln -s ../.. /var/lib/vircadia/$1/.local/share/Vircadia\ -\ dev ln -s ../.. /var/lib/vircadia/$1/.local/share/Vircadia mkdir -p /var/lib/vircadia/$1/domain-server diff --git a/pkg-scripts/server-postinst b/pkg-scripts/server-postinst index b115e7a778..01b4a59e22 100755 --- a/pkg-scripts/server-postinst +++ b/pkg-scripts/server-postinst @@ -2,6 +2,7 @@ # postinst script for vircadia-server # # see: dh_installdeb(1) +. ./deb-functions set -e @@ -26,9 +27,31 @@ case "$1" in chown vircadia:vircadia /var/lib/vircadia chmod 775 /var/lib/vircadia if [ ! -d "/var/lib/vircadia/default" ]; then - /opt/vircadia/new-server default 40100 - systemctl enable vircadia-server@default.target - systemctl start vircadia-server@default.target + if [ -d "/var/lib/athena" ]; then + getAthenaActive # get list of active Athena services + ATHENA_ACTIVE=$? + getAthenaEnabled # get list of enabled Athena services + ATHENA_ENABLED=$? + stopList $ATHENA_ACTIVE # shutdown active Athena servers + + # copy the server files over + cp /etc/opt/athena/* /etc/opt/vircadia + cp -R /var/lib/athena/* /var/lib/vircadia + chown -R vircadia:vircadia /var/lib/vircadia/* + find /var/lib/athena -maxdepth 3 -path "*\.local/share" -execdir sh -c 'cd share; ln -s ../.. Vircadia - dev' ';' + find /var/lib/athena -maxdepth 3 -path "*\.local/share" -execdir sh -c 'cd share; ln -s ../.. Vircadia' ';' + + VIRCADIA_ACTIVE=`echo $ATHENA_ACTIVE | sed 's/athena/vircadia/g'` + VIRCADIA_ENABLED=`echo $ATHENA_ENABLED | sed 's/athena/vircadia/g'` + + disableList $ATHENA_ENABLED + enableList $VIRCADIA_ENABLED + startList $VIRCADIA_ACTIVE + else + /opt/vircadia/new-server default 40100 + systemctl enable vircadia-server@default.target + systemctl start vircadia-server@default.target + fi fi ;; diff --git a/pkg-scripts/server-postrm b/pkg-scripts/server-postrm new file mode 100755 index 0000000000..82a9fb3a97 --- /dev/null +++ b/pkg-scripts/server-postrm @@ -0,0 +1,42 @@ +#!/bin/sh +# postrm script for vircadia-server +# +# see: dh_installdeb(1) +. ./deb-functions + +set -e + +# summary of how this script can be called: +# * `remove' +# * `purge' +# * `upgrade' +# * `failed-upgrade' +# * `disappear' +# * `abort-install; +# * `abort-install' +# * `abort-upgrade' +# for details, see https://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + +case "$1" in + purge) + rm -r /etc/opt/vircadia + rm -r /var/lib/vircadia + ;; + + remove|upgrade|failed-upgrade|disappear|abort-install|abort-upgrade) + ;; + + *) + echo "postrm called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 From d8d740d36925a72013e2729e73a482bccdacad04 Mon Sep 17 00:00:00 2001 From: Heather Anderson Date: Thu, 4 Jun 2020 07:14:27 +0000 Subject: [PATCH 136/160] Migration progressed far enough to get a .deb file out of this, installation has not yet been tested on any machine --- pkg-scripts/README | 34 ++++++------- pkg-scripts/deb-functions | 64 ------------------------ pkg-scripts/docker-entrypoint.sh | 4 +- pkg-scripts/make-deb-server | 84 ++++++++++++++++---------------- pkg-scripts/make-docker-server | 48 +++++++++--------- pkg-scripts/make-rpm-server | 62 +++++++++++------------ pkg-scripts/server-control | 2 +- pkg-scripts/server-postinst | 62 ++++++++++++++++++++++- pkg-scripts/server-postrm | 1 - pkg-scripts/vircadia-server.spec | 58 +++++++++++----------- 10 files changed, 203 insertions(+), 216 deletions(-) delete mode 100644 pkg-scripts/deb-functions diff --git a/pkg-scripts/README b/pkg-scripts/README index f4ef24eed4..92a9bf00d3 100644 --- a/pkg-scripts/README +++ b/pkg-scripts/README @@ -1,5 +1,5 @@ Collection of scripts to create server distribution packages. Most of these scripts assume -use of the build script at https://github.com/daleglass/athena-builder, specifically that +use of the build script at https://github.com/kasenvr/vircadia-builder, specifically that the following directory structure exists base folder/ @@ -9,7 +9,7 @@ base folder/ These scripts assume that the current directory is the pkg-scripts folder inside of the source directory and that the base folder can be reached by going to "../..". This may not work if pkg-scripts is a symlink; -adding an ATHENA=~/Athena to the beginning of the commandline will override where it looks for the base folder +adding an VIRCADIA=~/Vircadia to the beginning of the commandline will override where it looks for the base folder Ubuntu: DEBEMAIL="your-email@somewhere.com" DEBFULLNAME="Your Full Name" ./make-deb-server @@ -30,24 +30,24 @@ Docker: Results: The following directory structure is created for binaries: - /opt/athena - executables - /opt/athena/lib - private shared libraries required for executables - /opt/athena/resources - files required by domain-server administrative website - /opt/athena/plugins - files required by assignment-client, mainly for audio codecs + /opt/vircadia - executables + /opt/vircadia/lib - private shared libraries required for executables + /opt/vircadia/resources - files required by domain-server administrative website + /opt/vircadia/plugins - files required by assignment-client, mainly for audio codecs The following systemd services are installed in /usr/lib/systemd/system: - athena-assignment-client.service - athena-domain-server.service - athena-server.target - used to launch/shutdown the two prior services - athena-assignment-client@.service - athena-domain-server@.service - athena-server@.target - used to launch/shutdown the two prior services + vircadia-assignment-client.service + vircadia-domain-server.service + vircadia-server.target - used to launch/shutdown the two prior services + vircadia-assignment-client@.service + vircadia-domain-server@.service + vircadia-server@.target - used to launch/shutdown the two prior services - The top three services in this list are the "normal" services that launch Athena + The top three services in this list are the "normal" services that launch Vircadia in the typical fashion. The bottom three services are "template" services designed to permit multiple services to be installed and running on a single machine. - The script "/opt/athena/new-server serverName basePort" will do the necessary + The script "/opt/vircadia/new-server serverName basePort" will do the necessary setup for a new domain with the specified server name and port. Upon installation the package will create and launch a domain named "default" at base port 40100. The domain name here has nothing to do with the name people will use to find your @@ -55,6 +55,6 @@ Results: used to configure and run the domain on your server. The server stores its files in the following locations: - /var/lib/athena/.local - "unnamed" services (the default location for Athena servers) - /var/lib/athena/serverName - "named" (template) domains - /etc/opt/athena - environment variables when launching named domains + /var/lib/vircadia/.local - "unnamed" services (the default location for Vircadia servers) + /var/lib/vircadia/serverName - "named" (template) domains + /etc/opt/vircadia - environment variables when launching named domains diff --git a/pkg-scripts/deb-functions b/pkg-scripts/deb-functions deleted file mode 100644 index 9267f37112..0000000000 --- a/pkg-scripts/deb-functions +++ /dev/null @@ -1,64 +0,0 @@ -#!/bin/sh -# functions to assist with deb management - -getAthenaEnabled() -{ - return systemctl list-units --state=loaded \ - | grep -P "(athena-assignment-client|athena-domain-server|athena-server)" \ - | cut -d' ' -f 1 \ - | xargs -I {} sh -c 'if systemctl is-enabled {} >/dev/null ; then echo {} ; fi' \ - | paste -s -d'|' -} - -getVircadiaEnabled() -{ - return systemctl list-units --state=loaded \ - | grep -P "(vircadia-assignment-client|vircadia-domain-server|vircadia-server)" \ - | cut -d' ' -f 1 \ - | xargs -I {} sh -c 'if systemctl is-enabled {} >/dev/null ; then echo {} ; fi' \ - | paste -s -d'|' -} - -getAthenaActive() -{ - return systemctl list-units \ - | grep -P "(athena-assignment-client|athena-domain-server|athena-server)" \ - | cut -d' ' -f 1 \ - | paste -s -d'|' -} - -getVircadiaActive() -{ - return systemctl list-units \ - | grep -P "(vircadia-assignment-client|vircadia-domain-server|vircadia-server)" \ - | cut -d' ' -f 1 \ - | paste -s -d'|' -} - -disableList() -{ - echo $1 \ - | xargs -d'|' \ - | systemctl disable -} - -enableList() -{ - echo $1 \ - | xargs -d'|' \ - | systemctl enable -} - -stopList() -{ - echo $1 \ - | xargs -d'|' \ - | systemctl stop -} - -startList() -{ - echo $1 \ - | xargs -d'|' \ - | systemctl start -} diff --git a/pkg-scripts/docker-entrypoint.sh b/pkg-scripts/docker-entrypoint.sh index 9248152f32..b519647edb 100755 --- a/pkg-scripts/docker-entrypoint.sh +++ b/pkg-scripts/docker-entrypoint.sh @@ -15,8 +15,8 @@ if [ -f /var/lib/vircadia/.local -a "$(id -u)" = "0" ]; then fi # realign pid - THIS_ATHENA_PID=`ls -nd /var/lib/vircadia/.local | cut -f3 -d' '` - CUR_ATHENA_PID=`getent passwd vircadia | cut -f3 -d: || true` + THIS_VIRCADIA_PID=`ls -nd /var/lib/vircadia/.local | cut -f3 -d' '` + CUR_VIRCADIA_PID=`getent passwd vircadia | cut -f3 -d: || true` if [ ! -z "$THIS_VIRCADIA_PID" -a "$THIS_VIRCADIA_PID" != "$CUR_VIRCADIA_PID" ]; then usermod -u ${THIS_VIRCADIA_PID} -o vircadia fi diff --git a/pkg-scripts/make-deb-server b/pkg-scripts/make-deb-server index aaa0c2f26f..6a7bff26c3 100755 --- a/pkg-scripts/make-deb-server +++ b/pkg-scripts/make-deb-server @@ -1,12 +1,12 @@ #!/bin/sh -if [ "$ATHENA" = "" ]; then - ATHENA=`realpath ../..` +if [ "$VIRCADIA" = "" ]; then + VIRCADIA=`realpath ../..` fi -GITDATE=`git -C $ATHENA/source log -n 1 --format=raw | grep author | cut -d">" -f 2 | cut -d" " -f 2 | xargs -I {} date -d @{} +"%Y%m%d"` -GITCOMMIT=`git -C $ATHENA/source rev-parse HEAD | cut -c 1-7` -VERSION=0.86.0-k2-$GITDATE-$GITCOMMIT +GITDATE=`git -C $VIRCADIA/source log -n 1 --format=raw | grep author | cut -d">" -f 2 | cut -d" " -f 2 | xargs -I {} date -d @{} +"%Y%m%d"` +GITCOMMIT=`git -C $VIRCADIA/source rev-parse HEAD | cut -c 1-7` +VERSION=2020.2.0-asteria-$GITDATE-$GITCOMMIT sudo apt-get install chrpath binutils dh-make @@ -15,31 +15,29 @@ rm -r temp-make-deb mkdir -p $DEB_BUILD_ROOT # copy the files over -cp $ATHENA/build/assignment-client/assignment-client $DEB_BUILD_ROOT -cp $ATHENA/build/domain-server/domain-server $DEB_BUILD_ROOT -cp $ATHENA/build/tools/oven/oven $DEB_BUILD_ROOT -cp $ATHENA/build/libraries/*/*.so $DEB_BUILD_ROOT -#cp $ATHENA/build/ice-server/ice-server $DEB_BUILD_ROOT +cp $VIRCADIA/build/assignment-client/assignment-client $DEB_BUILD_ROOT +cp $VIRCADIA/build/domain-server/domain-server $DEB_BUILD_ROOT +cp $VIRCADIA/build/tools/oven/oven $DEB_BUILD_ROOT +cp $VIRCADIA/build/libraries/*/*.so $DEB_BUILD_ROOT +#cp $VIRCADIA/build/ice-server/ice-server $DEB_BUILD_ROOT chrpath -d $DEB_BUILD_ROOT/* -cp $ATHENA/qt5-install/lib/libQt5Network.so.*.*.* $DEB_BUILD_ROOT -cp $ATHENA/qt5-install/lib/libQt5Core.so.*.*.* $DEB_BUILD_ROOT -cp $ATHENA/qt5-install/lib/libQt5Widgets.so.*.*.* $DEB_BUILD_ROOT -cp $ATHENA/qt5-install/lib/libQt5Gui.so.*.*.* $DEB_BUILD_ROOT -cp $ATHENA/qt5-install/lib/libQt5Script.so.*.*.* $DEB_BUILD_ROOT -cp $ATHENA/qt5-install/lib/libQt5Quick.so.*.*.* $DEB_BUILD_ROOT -cp $ATHENA/qt5-install/lib/libQt5WebSockets.so.*.*.* $DEB_BUILD_ROOT -cp $ATHENA/qt5-install/lib/libQt5Qml.so.*.*.* $DEB_BUILD_ROOT -cp $ATHENA/qt5-install/lib/libQt5ScriptTools.so.*.*.* $DEB_BUILD_ROOT -cp $ATHENA/build/ext/makefiles/quazip/project/lib/libquazip5.so.*.*.* $DEB_BUILD_ROOT +cp $VIRCADIA/qt5-install/lib/libQt5Network.so.*.*.* $DEB_BUILD_ROOT +cp $VIRCADIA/qt5-install/lib/libQt5Core.so.*.*.* $DEB_BUILD_ROOT +cp $VIRCADIA/qt5-install/lib/libQt5Widgets.so.*.*.* $DEB_BUILD_ROOT +cp $VIRCADIA/qt5-install/lib/libQt5Gui.so.*.*.* $DEB_BUILD_ROOT +cp $VIRCADIA/qt5-install/lib/libQt5Script.so.*.*.* $DEB_BUILD_ROOT +cp $VIRCADIA/qt5-install/lib/libQt5WebSockets.so.*.*.* $DEB_BUILD_ROOT +cp $VIRCADIA/qt5-install/lib/libQt5Qml.so.*.*.* $DEB_BUILD_ROOT +cp $VIRCADIA/qt5-install/lib/libQt5ScriptTools.so.*.*.* $DEB_BUILD_ROOT chmod +x $DEB_BUILD_ROOT/*.so.*.*.* strip --strip-all $DEB_BUILD_ROOT/* -cp $ATHENA/source/pkg-scripts/new-server $DEB_BUILD_ROOT -cp -a $ATHENA/source/domain-server/resources $DEB_BUILD_ROOT +cp $VIRCADIA/source/pkg-scripts/new-server $DEB_BUILD_ROOT +cp -a $VIRCADIA/source/domain-server/resources $DEB_BUILD_ROOT find $DEB_BUILD_ROOT/resources -name ".gitignore" -delete find $DEB_BUILD_ROOT/resources -type f -executable -exec sh -c 'chmod -x {}' \; -cp $ATHENA/source/README.md $DEB_BUILD_ROOT -cp $ATHENA/source/README_hifi.md $DEB_BUILD_ROOT -cp -a $ATHENA/build/assignment-client/plugins $DEB_BUILD_ROOT +cp $VIRCADIA/source/README.md $DEB_BUILD_ROOT +cp $VIRCADIA/source/README_hifi.md $DEB_BUILD_ROOT +cp -a $VIRCADIA/build/assignment-client/plugins $DEB_BUILD_ROOT strip --strip-all $DEB_BUILD_ROOT/plugins/*.so strip --strip-all $DEB_BUILD_ROOT/plugins/*/*.so @@ -47,20 +45,20 @@ strip --strip-all $DEB_BUILD_ROOT/plugins/*/*.so cd $DEB_BUILD_ROOT dh_make -p vircadia-server_$VERSION-0ubuntu1 -c apache -s --createorig -y -cp $ATHENA/source/pkg-scripts/vircadia-assignment-client.service debian -cp $ATHENA/source/pkg-scripts/vircadia-assignment-client@.service debian -cp $ATHENA/source/pkg-scripts/vircadia-domain-server.service debian -cp $ATHENA/source/pkg-scripts/vircadia-domain-server@.service debian -#cp $ATHENA/source/pkg-scripts/vircadia-ice-server.service debian -#cp $ATHENA/source/pkg-scripts/vircadia-ice-server@.service debian -cp $ATHENA/source/pkg-scripts/vircadia-server.target debian -cp $ATHENA/source/pkg-scripts/vircadia-server@.target debian +cp $VIRCADIA/source/pkg-scripts/vircadia-assignment-client.service debian +cp $VIRCADIA/source/pkg-scripts/vircadia-assignment-client@.service debian +cp $VIRCADIA/source/pkg-scripts/vircadia-domain-server.service debian +cp $VIRCADIA/source/pkg-scripts/vircadia-domain-server@.service debian +#cp $VIRCADIA/source/pkg-scripts/vircadia-ice-server.service debian +#cp $VIRCADIA/source/pkg-scripts/vircadia-ice-server@.service debian +cp $VIRCADIA/source/pkg-scripts/vircadia-server.target debian +cp $VIRCADIA/source/pkg-scripts/vircadia-server@.target debian -cp $ATHENA/source/pkg-scripts/server-control debian/control -cp $ATHENA/source/pkg-scripts/server-prerm debian/prerm -cp $ATHENA/source/pkg-scripts/server-postinst debian/postinst -cp $ATHENA/source/pkg-scripts/server-postrm debian/postrm -cp $ATHENA/source/LICENSE debian/copyright +cp $VIRCADIA/source/pkg-scripts/server-control debian/control +cp $VIRCADIA/source/pkg-scripts/server-prerm debian/prerm +cp $VIRCADIA/source/pkg-scripts/server-postinst debian/postinst +cp $VIRCADIA/source/pkg-scripts/server-postrm debian/postrm +cp $VIRCADIA/source/LICENSE debian/copyright echo /etc/opt/vircadia > debian/dirs echo /var/lib/vircadia >> debian/dirs @@ -88,12 +86,14 @@ done find resources -type f -exec sh -c 'echo {} opt/vircadia/$(dirname "{}") >> debian/install' \; find plugins -type f -exec sh -c 'echo {} opt/vircadia/$(dirname "{}") >> debian/install' \; -SOFILES=`ls *.so *.so.*.*.* | sed 's/\./\\\./g' | paste -d'|' -s` +SOFILES=`ls *.so *.so.*.*.* | grep -Po '^(.+\.so(\.\d+)?)' | sed 's/\./\\\./g' | paste -d'|' -s` -DEPENDS=`find * -type f -executable -exec sh -c 'objdump -p {} | grep NEEDED' \; | awk '{print $2}' | sort | uniq | egrep -v "^($SOFILES)$" | xargs -n 1 -I {} sh -c 'dpkg -S {} | head -n 1' | cut -d ':' -f 1 | sort | uniq | paste -d',' -s` +DEPENDS=`find * -path debian -prune -o -type f -executable -exec sh -c 'objdump -p {} | grep NEEDED' \; \ + | awk '{print $2}' | sort | uniq | egrep -v "^($SOFILES)$" \ + | xargs -n 1 -I {} sh -c 'dpkg -S {} | head -n 1' | cut -d ':' -f 1 | sort | uniq | paste -d',' -s` -cp $ATHENA/source/pkg-scripts/server-rules debian/rules -sed "s/{DEPENDS}/$DEPENDS/" $ATHENA/source/pkg-scripts/server-control > debian/control +cp $VIRCADIA/source/pkg-scripts/server-rules debian/rules +sed "s/{DEPENDS}/$DEPENDS/" $VIRCADIA/source/pkg-scripts/server-control > debian/control dpkg-buildpackage -us -uc diff --git a/pkg-scripts/make-docker-server b/pkg-scripts/make-docker-server index 90d4434a03..68b8ca7cd6 100755 --- a/pkg-scripts/make-docker-server +++ b/pkg-scripts/make-docker-server @@ -1,53 +1,51 @@ #!/bin/sh -if [ "$ATHENA" = "" ]; then - ATHENA=`realpath ../..` +if [ "$VIRCADIA" = "" ]; then + VIRCADIA=`realpath ../..` fi -GITSRC=`git -C $ATHENA/source config --get remote.origin.url | cut -d':' -f 2` -GITDATE=`git -C $ATHENA/source log -n 1 --format=raw | grep author | cut -d">" -f 2 | cut -d" " -f 2 | xargs -I {} date -d @{} +"%Y%m%d"` -GITCOMMIT=`git -C $ATHENA/source rev-parse HEAD | cut -c 1-7` +GITSRC=`git -C $VIRCADIA/source config --get remote.origin.url | cut -d':' -f 2` +GITDATE=`git -C $VIRCADIA/source log -n 1 --format=raw | grep author | cut -d">" -f 2 | cut -d" " -f 2 | xargs -I {} date -d @{} +"%Y%m%d"` +GITCOMMIT=`git -C $VIRCADIA/source rev-parse HEAD | cut -c 1-7` sudo apt-get install chrpath binutils DOCK_BUILD_ROOT=temp-make-dock rm -r temp-make-dock mkdir -p $DOCK_BUILD_ROOT -cp $ATHENA/source/pkg-scripts/Dockerfile.templ $DOCK_BUILD_ROOT/Dockerfile -cp $ATHENA/source/pkg-scripts/docker-entrypoint.sh $DOCK_BUILD_ROOT/entrypoint.sh -cp $ATHENA/source/pkg-scripts/docker-vircadia-supervisor.conf $DOCK_BUILD_ROOT/vircadia.conf +cp $VIRCADIA/source/pkg-scripts/Dockerfile.templ $DOCK_BUILD_ROOT/Dockerfile +cp $VIRCADIA/source/pkg-scripts/docker-entrypoint.sh $DOCK_BUILD_ROOT/entrypoint.sh +cp $VIRCADIA/source/pkg-scripts/docker-vircadia-supervisor.conf $DOCK_BUILD_ROOT/vircadia.conf # copy the files over mkdir -p $DOCK_BUILD_ROOT/opt -cp $ATHENA/build/assignment-client/assignment-client $DOCK_BUILD_ROOT/opt -cp $ATHENA/build/domain-server/domain-server $DOCK_BUILD_ROOT/opt -cp $ATHENA/build/tools/oven/oven $DOCK_BUILD_ROOT/opt -#cp $ATHENA/build/ice-server/ice-server $DOCK_BUILD_ROOT/opt +cp $VIRCADIA/build/assignment-client/assignment-client $DOCK_BUILD_ROOT/opt +cp $VIRCADIA/build/domain-server/domain-server $DOCK_BUILD_ROOT/opt +cp $VIRCADIA/build/tools/oven/oven $DOCK_BUILD_ROOT/opt +#cp $VIRCADIA/build/ice-server/ice-server $DOCK_BUILD_ROOT/opt strip --strip-all $DOCK_BUILD_ROOT/opt/* chrpath -d $DOCK_BUILD_ROOT/opt/* -cp -a $ATHENA/build/assignment-client/plugins $DOCK_BUILD_ROOT/opt +cp -a $VIRCADIA/build/assignment-client/plugins $DOCK_BUILD_ROOT/opt strip --strip-all $DOCK_BUILD_ROOT/opt/plugins/*.so chrpath -d $DOCK_BUILD_ROOT/opt/plugins/*.so strip --strip-all $DOCK_BUILD_ROOT/opt/plugins/*/*.so chrpath -d $DOCK_BUILD_ROOT/opt/plugins/*/*.so -cp -a $ATHENA/source/domain-server/resources $DOCK_BUILD_ROOT/opt +cp -a $VIRCADIA/source/domain-server/resources $DOCK_BUILD_ROOT/opt find $DOCK_BUILD_ROOT/opt/resources -name ".gitignore" -delete find $DOCK_BUILD_ROOT/opt/resources -type f -executable -exec sh -c 'chmod -x {}' \; mkdir -p $DOCK_BUILD_ROOT/lib -cp $ATHENA/build/libraries/*/*.so $DOCK_BUILD_ROOT/lib -cp $ATHENA/qt5-install/lib/libQt5Network.so.*.*.* $DOCK_BUILD_ROOT/lib -cp $ATHENA/qt5-install/lib/libQt5Core.so.*.*.* $DOCK_BUILD_ROOT/lib -cp $ATHENA/qt5-install/lib/libQt5Widgets.so.*.*.* $DOCK_BUILD_ROOT/lib -cp $ATHENA/qt5-install/lib/libQt5Gui.so.*.*.* $DOCK_BUILD_ROOT/lib -cp $ATHENA/qt5-install/lib/libQt5Script.so.*.*.* $DOCK_BUILD_ROOT/lib -cp $ATHENA/qt5-install/lib/libQt5Quick.so.*.*.* $DOCK_BUILD_ROOT/lib -cp $ATHENA/qt5-install/lib/libQt5WebSockets.so.*.*.* $DOCK_BUILD_ROOT/lib -cp $ATHENA/qt5-install/lib/libQt5Qml.so.*.*.* $DOCK_BUILD_ROOT/lib -cp $ATHENA/qt5-install/lib/libQt5ScriptTools.so.*.*.* $DOCK_BUILD_ROOT/lib -cp $ATHENA/build/ext/makefiles/quazip/project/lib/libquazip5.so.*.*.* $DOCK_BUILD_ROOT/lib +cp $VIRCADIA/build/libraries/*/*.so $DOCK_BUILD_ROOT/lib +cp $VIRCADIA/qt5-install/lib/libQt5Network.so.*.*.* $DOCK_BUILD_ROOT/lib +cp $VIRCADIA/qt5-install/lib/libQt5Core.so.*.*.* $DOCK_BUILD_ROOT/lib +cp $VIRCADIA/qt5-install/lib/libQt5Widgets.so.*.*.* $DOCK_BUILD_ROOT/lib +cp $VIRCADIA/qt5-install/lib/libQt5Gui.so.*.*.* $DOCK_BUILD_ROOT/lib +cp $VIRCADIA/qt5-install/lib/libQt5Script.so.*.*.* $DOCK_BUILD_ROOT/lib +cp $VIRCADIA/qt5-install/lib/libQt5WebSockets.so.*.*.* $DOCK_BUILD_ROOT/lib +cp $VIRCADIA/qt5-install/lib/libQt5Qml.so.*.*.* $DOCK_BUILD_ROOT/lib +cp $VIRCADIA/qt5-install/lib/libQt5ScriptTools.so.*.*.* $DOCK_BUILD_ROOT/lib chmod +x $DOCK_BUILD_ROOT/lib/* strip --strip-all $DOCK_BUILD_ROOT/lib/* chrpath -d $DOCK_BUILD_ROOT/lib/* diff --git a/pkg-scripts/make-rpm-server b/pkg-scripts/make-rpm-server index 6b6ebd6ae2..57231e4f55 100755 --- a/pkg-scripts/make-rpm-server +++ b/pkg-scripts/make-rpm-server @@ -1,44 +1,40 @@ #!/bin/sh -if [ "$ATHENA" = "" ]; then - ATHENA=`realpath ../..` +if [ "$VIRCADIA" = "" ]; then + VIRCADIA=`realpath ../..` fi -GITDATE=`git -C $ATHENA/source log -n 1 --format=raw | grep author | cut -d">" -f 2 | cut -d" " -f 2 | xargs -I {} date -d @{} +"%Y%m%d"` -GITCOMMIT=`git -C $ATHENA/source rev-parse HEAD | cut -c 1-7` -VERSION=0.86.0_K2_${GITDATE}_${GITCOMMIT} +GITDATE=`git -C $VIRCADIA/source log -n 1 --format=raw | grep author | cut -d">" -f 2 | cut -d" " -f 2 | xargs -I {} date -d @{} +"%Y%m%d"` +GITCOMMIT=`git -C $VIRCADIA/source rev-parse HEAD | cut -c 1-7` +VERSION=2020.2.0_ASTERIA_${GITDATE}_${GITCOMMIT} SOFILES=`ls \ - $ATHENA/build/libraries/*/*.so \ - $ATHENA/qt5-install/lib/libQt5Network.so.*.*.* \ - $ATHENA/qt5-install/lib/libQt5Core.so.*.*.* \ - $ATHENA/qt5-install/lib/libQt5Widgets.so.*.*.* \ - $ATHENA/qt5-install/lib/libQt5Gui.so.*.*.* \ - $ATHENA/qt5-install/lib/libQt5Script.so.*.*.* \ - $ATHENA/qt5-install/lib/libQt5Quick.so.*.*.* \ - $ATHENA/qt5-install/lib/libQt5WebSockets.so.*.*.* \ - $ATHENA/qt5-install/lib/libQt5Qml.so.*.*.* \ - $ATHENA/qt5-install/lib/libQt5ScriptTools.so.*.*.* \ - $ATHENA/build/ext/makefiles/quazip/project/lib/libquazip5.so.*.*.* \ + $VIRCADIA/build/libraries/*/*.so \ + $VIRCADIA/qt5-install/lib/libQt5Network.so.*.*.* \ + $VIRCADIA/qt5-install/lib/libQt5Core.so.*.*.* \ + $VIRCADIA/qt5-install/lib/libQt5Widgets.so.*.*.* \ + $VIRCADIA/qt5-install/lib/libQt5Gui.so.*.*.* \ + $VIRCADIA/qt5-install/lib/libQt5Script.so.*.*.* \ + $VIRCADIA/qt5-install/lib/libQt5WebSockets.so.*.*.* \ + $VIRCADIA/qt5-install/lib/libQt5Qml.so.*.*.* \ + $VIRCADIA/qt5-install/lib/libQt5ScriptTools.so.*.*.* \ | sed 's/\./\\\./g' \ | paste -d'|' -s` DEPENDS=mesa-libGL,`ls \ - $ATHENA/build/assignment-client/assignment-client \ - $ATHENA/build/domain-server/domain-server \ - $ATHENA/build/tools/oven/oven \ - $ATHENA/build/libraries/*/*.so \ - $ATHENA/qt5-install/lib/libQt5Network.so.*.*.* \ - $ATHENA/qt5-install/lib/libQt5Core.so.*.*.* \ - $ATHENA/qt5-install/lib/libQt5Widgets.so.*.*.* \ - $ATHENA/qt5-install/lib/libQt5Gui.so.*.*.* \ - $ATHENA/qt5-install/lib/libQt5Script.so.*.*.* \ - $ATHENA/qt5-install/lib/libQt5Quick.so.*.*.* \ - $ATHENA/qt5-install/lib/libQt5WebSockets.so.*.*.* \ - $ATHENA/qt5-install/lib/libQt5Qml.so.*.*.* \ - $ATHENA/qt5-install/lib/libQt5ScriptTools.so.*.*.* \ - $ATHENA/build/ext/makefiles/quazip/project/lib/libquazip5.so.*.*.* \ - $ATHENA/build/assignment-client/plugins/*.so \ - $ATHENA/build/assignment-client/plugins/*/*.so \ + $VIRCADIA/build/assignment-client/assignment-client \ + $VIRCADIA/build/domain-server/domain-server \ + $VIRCADIA/build/tools/oven/oven \ + $VIRCADIA/build/libraries/*/*.so \ + $VIRCADIA/qt5-install/lib/libQt5Network.so.*.*.* \ + $VIRCADIA/qt5-install/lib/libQt5Core.so.*.*.* \ + $VIRCADIA/qt5-install/lib/libQt5Widgets.so.*.*.* \ + $VIRCADIA/qt5-install/lib/libQt5Gui.so.*.*.* \ + $VIRCADIA/qt5-install/lib/libQt5Script.so.*.*.* \ + $VIRCADIA/qt5-install/lib/libQt5WebSockets.so.*.*.* \ + $VIRCADIA/qt5-install/lib/libQt5Qml.so.*.*.* \ + $VIRCADIA/qt5-install/lib/libQt5ScriptTools.so.*.*.* \ + $VIRCADIA/build/assignment-client/plugins/*.so \ + $VIRCADIA/build/assignment-client/plugins/*/*.so \ | xargs -I {} sh -c 'objdump -p {} | grep NEEDED' \ | awk '{print $2}' \ | sort | uniq \ @@ -51,6 +47,6 @@ DEPENDS=mesa-libGL,`ls \ sudo yum install chrpath -export VERSION DEPENDS ATHENA +export VERSION DEPENDS VIRCADIA rpmbuild --target x86_64 -bb ./vircadia-server.spec mv ~/rpmbuild/RPMS/x86_64/*.rpm . diff --git a/pkg-scripts/server-control b/pkg-scripts/server-control index 2c37da268a..c80b8da724 100644 --- a/pkg-scripts/server-control +++ b/pkg-scripts/server-control @@ -4,7 +4,7 @@ Priority: optional Maintainer: Heather Anderson Build-Depends: debhelper (>= 10) Standards-Version: 4.1.2 -Homepage: https://www.projectathena.dev +Homepage: https://vircadia.com Vcs-Git: https://github.com/kasenvr/project-athena.git Vcs-Browser: https://github.com/kasenvr/project-athena diff --git a/pkg-scripts/server-postinst b/pkg-scripts/server-postinst index 01b4a59e22..798cb4a0a8 100755 --- a/pkg-scripts/server-postinst +++ b/pkg-scripts/server-postinst @@ -2,7 +2,6 @@ # postinst script for vircadia-server # # see: dh_installdeb(1) -. ./deb-functions set -e @@ -18,6 +17,67 @@ set -e # for details, see https://www.debian.org/doc/debian-policy/ or # the debian-policy package +getAthenaEnabled() +{ + return systemctl list-units --state=loaded \ + | grep -P "(athena-assignment-client|athena-domain-server|athena-server)" \ + | cut -d' ' -f 1 \ + | xargs -I {} sh -c 'if systemctl is-enabled {} >/dev/null ; then echo {} ; fi' \ + | paste -s -d'|' +} + +getVircadiaEnabled() +{ + return systemctl list-units --state=loaded \ + | grep -P "(vircadia-assignment-client|vircadia-domain-server|vircadia-server)" \ + | cut -d' ' -f 1 \ + | xargs -I {} sh -c 'if systemctl is-enabled {} >/dev/null ; then echo {} ; fi' \ + | paste -s -d'|' +} + +getAthenaActive() +{ + return systemctl list-units \ + | grep -P "(athena-assignment-client|athena-domain-server|athena-server)" \ + | cut -d' ' -f 1 \ + | paste -s -d'|' +} + +getVircadiaActive() +{ + return systemctl list-units \ + | grep -P "(vircadia-assignment-client|vircadia-domain-server|vircadia-server)" \ + | cut -d' ' -f 1 \ + | paste -s -d'|' +} + +disableList() +{ + echo $1 \ + | xargs -d'|' \ + | systemctl disable +} + +enableList() +{ + echo $1 \ + | xargs -d'|' \ + | systemctl enable +} + +stopList() +{ + echo $1 \ + | xargs -d'|' \ + | systemctl stop +} + +startList() +{ + echo $1 \ + | xargs -d'|' \ + | systemctl start +} case "$1" in configure) diff --git a/pkg-scripts/server-postrm b/pkg-scripts/server-postrm index 82a9fb3a97..944d5e60f4 100755 --- a/pkg-scripts/server-postrm +++ b/pkg-scripts/server-postrm @@ -2,7 +2,6 @@ # postrm script for vircadia-server # # see: dh_installdeb(1) -. ./deb-functions set -e diff --git a/pkg-scripts/vircadia-server.spec b/pkg-scripts/vircadia-server.spec index 82126f493f..0f28db50c8 100644 --- a/pkg-scripts/vircadia-server.spec +++ b/pkg-scripts/vircadia-server.spec @@ -1,4 +1,4 @@ -#ATHENA=~/Athena rpmbuild --target x86_64 -bb vircadia-server.spec +#VIRCADIA=~/Vircadia rpmbuild --target x86_64 -bb vircadia-server.spec %define version %{lua:print(os.getenv("VERSION"))} %define depends %{lua:print(os.getenv("DEPENDS"))} @@ -8,8 +8,8 @@ Release: 1%{?dist} Summary: Vircadia metaverse platform, based on the High Fidelity Engine. License: ASL 2.0 -URL: https://projectathena.io -Source0: https://github.com/daleglass/athena-builder/blob/master/athena_builder +URL: https://vircadia.com +Source0: https://github.com/kasenvr/vircadia-builder/blob/master/vircadia-builder #BuildRequires: systemd-rpm-macros BuildRequires: chrpath @@ -32,38 +32,36 @@ Vircadia allows creation and sharing of VR experiences. %install rm -rf $RPM_BUILD_ROOT install -d $RPM_BUILD_ROOT/opt/vircadia -install -m 0755 -t $RPM_BUILD_ROOT/opt/vircadia $ATHENA/build/assignment-client/assignment-client -install -m 0755 -t $RPM_BUILD_ROOT/opt/vircadia $ATHENA/build/domain-server/domain-server -install -m 0755 -t $RPM_BUILD_ROOT/opt/vircadia $ATHENA/build/tools/oven/oven -#install -m 0755 -t $RPM_BUILD_ROOT/opt/vircadia $ATHENA/build/ice-server/ice-server +install -m 0755 -t $RPM_BUILD_ROOT/opt/vircadia $VIRCADIA/build/assignment-client/assignment-client +install -m 0755 -t $RPM_BUILD_ROOT/opt/vircadia $VIRCADIA/build/domain-server/domain-server +install -m 0755 -t $RPM_BUILD_ROOT/opt/vircadia $VIRCADIA/build/tools/oven/oven +#install -m 0755 -t $RPM_BUILD_ROOT/opt/vircadia $VIRCADIA/build/ice-server/ice-server strip --strip-all $RPM_BUILD_ROOT/opt/vircadia/* chrpath -d $RPM_BUILD_ROOT/opt/vircadia/* -install -m 0755 -t $RPM_BUILD_ROOT/opt/vircadia $ATHENA/source/pkg-scripts/new-server +install -m 0755 -t $RPM_BUILD_ROOT/opt/vircadia $VIRCADIA/source/pkg-scripts/new-server install -d $RPM_BUILD_ROOT/opt/vircadia/lib -install -m 0644 -t $RPM_BUILD_ROOT/opt/vircadia/lib $ATHENA/build/libraries/*/*.so +install -m 0644 -t $RPM_BUILD_ROOT/opt/vircadia/lib $VIRCADIA/build/libraries/*/*.so strip --strip-all $RPM_BUILD_ROOT/opt/vircadia/lib/* chrpath -d $RPM_BUILD_ROOT/opt/vircadia/lib/* -install -m 0644 -t $RPM_BUILD_ROOT/opt/vircadia/lib $ATHENA/qt5-install/lib/libQt5Network.so.*.*.* -install -m 0644 -t $RPM_BUILD_ROOT/opt/vircadia/lib $ATHENA/qt5-install/lib/libQt5Core.so.*.*.* -install -m 0644 -t $RPM_BUILD_ROOT/opt/vircadia/lib $ATHENA/qt5-install/lib/libQt5Widgets.so.*.*.* -install -m 0644 -t $RPM_BUILD_ROOT/opt/vircadia/lib $ATHENA/qt5-install/lib/libQt5Gui.so.*.*.* -install -m 0644 -t $RPM_BUILD_ROOT/opt/vircadia/lib $ATHENA/qt5-install/lib/libQt5Script.so.*.*.* -install -m 0644 -t $RPM_BUILD_ROOT/opt/vircadia/lib $ATHENA/qt5-install/lib/libQt5Quick.so.*.*.* -install -m 0644 -t $RPM_BUILD_ROOT/opt/vircadia/lib $ATHENA/qt5-install/lib/libQt5WebSockets.so.*.*.* -install -m 0644 -t $RPM_BUILD_ROOT/opt/vircadia/lib $ATHENA/qt5-install/lib/libQt5Qml.so.*.*.* -install -m 0644 -t $RPM_BUILD_ROOT/opt/vircadia/lib $ATHENA/qt5-install/lib/libQt5ScriptTools.so.*.*.* -install -m 0644 -t $RPM_BUILD_ROOT/opt/vircadia/lib $ATHENA/build/ext/makefiles/quazip/project/lib/libquazip5.so.*.*.* +install -m 0644 -t $RPM_BUILD_ROOT/opt/vircadia/lib $VIRCADIA/qt5-install/lib/libQt5Network.so.*.*.* +install -m 0644 -t $RPM_BUILD_ROOT/opt/vircadia/lib $VIRCADIA/qt5-install/lib/libQt5Core.so.*.*.* +install -m 0644 -t $RPM_BUILD_ROOT/opt/vircadia/lib $VIRCADIA/qt5-install/lib/libQt5Widgets.so.*.*.* +install -m 0644 -t $RPM_BUILD_ROOT/opt/vircadia/lib $VIRCADIA/qt5-install/lib/libQt5Gui.so.*.*.* +install -m 0644 -t $RPM_BUILD_ROOT/opt/vircadia/lib $VIRCADIA/qt5-install/lib/libQt5Script.so.*.*.* +install -m 0644 -t $RPM_BUILD_ROOT/opt/vircadia/lib $VIRCADIA/qt5-install/lib/libQt5WebSockets.so.*.*.* +install -m 0644 -t $RPM_BUILD_ROOT/opt/vircadia/lib $VIRCADIA/qt5-install/lib/libQt5Qml.so.*.*.* +install -m 0644 -t $RPM_BUILD_ROOT/opt/vircadia/lib $VIRCADIA/qt5-install/lib/libQt5ScriptTools.so.*.*.* install -d $RPM_BUILD_ROOT/usr/lib/systemd/system -install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/pkg-scripts/vircadia-assignment-client.service -install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/pkg-scripts/vircadia-assignment-client@.service -install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/pkg-scripts/vircadia-domain-server.service -install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/pkg-scripts/vircadia-domain-server@.service -#install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/pkg-scripts/vircadia-ice-server.service -#install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/pkg-scripts/vircadia-ice-server@.service -install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/pkg-scripts/vircadia-server.target -install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/pkg-scripts/vircadia-server@.target -cp -a $ATHENA/source/domain-server/resources $RPM_BUILD_ROOT/opt/vircadia -cp -a $ATHENA/build/assignment-client/plugins $RPM_BUILD_ROOT/opt/vircadia +install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $VIRCADIA/source/pkg-scripts/vircadia-assignment-client.service +install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $VIRCADIA/source/pkg-scripts/vircadia-assignment-client@.service +install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $VIRCADIA/source/pkg-scripts/vircadia-domain-server.service +install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $VIRCADIA/source/pkg-scripts/vircadia-domain-server@.service +#install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $VIRCADIA/source/pkg-scripts/vircadia-ice-server.service +#install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $VIRCADIA/source/pkg-scripts/vircadia-ice-server@.service +install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $VIRCADIA/source/pkg-scripts/vircadia-server.target +install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $VIRCADIA/source/pkg-scripts/vircadia-server@.target +cp -a $VIRCADIA/source/domain-server/resources $RPM_BUILD_ROOT/opt/vircadia +cp -a $VIRCADIA/build/assignment-client/plugins $RPM_BUILD_ROOT/opt/vircadia chrpath -d $RPM_BUILD_ROOT/opt/vircadia/plugins/*.so chrpath -d $RPM_BUILD_ROOT/opt/vircadia/plugins/*/*.so strip --strip-all $RPM_BUILD_ROOT/opt/vircadia/plugins/*.so @@ -72,7 +70,7 @@ find $RPM_BUILD_ROOT/opt/vircadia/resources -name ".gitignore" -delete %files -%license $ATHENA/source/LICENSE +%license $VIRCADIA/source/LICENSE /opt/vircadia /usr/lib/systemd/system From bb97592dd42c0e10e9d2afcca32ee6feba68f6e1 Mon Sep 17 00:00:00 2001 From: Heather Anderson Date: Sat, 6 Jun 2020 06:27:29 +0000 Subject: [PATCH 137/160] Testing complete (thanks to Kalila for helping!) --- pkg-scripts/server-postinst | 87 +++++++------------------------------ 1 file changed, 16 insertions(+), 71 deletions(-) diff --git a/pkg-scripts/server-postinst b/pkg-scripts/server-postinst index 798cb4a0a8..34c9c5661a 100755 --- a/pkg-scripts/server-postinst +++ b/pkg-scripts/server-postinst @@ -17,68 +17,6 @@ set -e # for details, see https://www.debian.org/doc/debian-policy/ or # the debian-policy package -getAthenaEnabled() -{ - return systemctl list-units --state=loaded \ - | grep -P "(athena-assignment-client|athena-domain-server|athena-server)" \ - | cut -d' ' -f 1 \ - | xargs -I {} sh -c 'if systemctl is-enabled {} >/dev/null ; then echo {} ; fi' \ - | paste -s -d'|' -} - -getVircadiaEnabled() -{ - return systemctl list-units --state=loaded \ - | grep -P "(vircadia-assignment-client|vircadia-domain-server|vircadia-server)" \ - | cut -d' ' -f 1 \ - | xargs -I {} sh -c 'if systemctl is-enabled {} >/dev/null ; then echo {} ; fi' \ - | paste -s -d'|' -} - -getAthenaActive() -{ - return systemctl list-units \ - | grep -P "(athena-assignment-client|athena-domain-server|athena-server)" \ - | cut -d' ' -f 1 \ - | paste -s -d'|' -} - -getVircadiaActive() -{ - return systemctl list-units \ - | grep -P "(vircadia-assignment-client|vircadia-domain-server|vircadia-server)" \ - | cut -d' ' -f 1 \ - | paste -s -d'|' -} - -disableList() -{ - echo $1 \ - | xargs -d'|' \ - | systemctl disable -} - -enableList() -{ - echo $1 \ - | xargs -d'|' \ - | systemctl enable -} - -stopList() -{ - echo $1 \ - | xargs -d'|' \ - | systemctl stop -} - -startList() -{ - echo $1 \ - | xargs -d'|' \ - | systemctl start -} - case "$1" in configure) ldconfig -n /opt/vircadia/lib @@ -88,25 +26,32 @@ case "$1" in chmod 775 /var/lib/vircadia if [ ! -d "/var/lib/vircadia/default" ]; then if [ -d "/var/lib/athena" ]; then - getAthenaActive # get list of active Athena services - ATHENA_ACTIVE=$? - getAthenaEnabled # get list of enabled Athena services - ATHENA_ENABLED=$? - stopList $ATHENA_ACTIVE # shutdown active Athena servers + ATHENA_ACTIVE=`systemctl list-units \ + | grep -P -o "(athena-assignment-client|athena-domain-server|athena-server)\S+" \ + | paste -s -d'|' \ + | head -c -1` + ATHENA_ENABLED=`systemctl list-units --state=loaded \ + | grep -P -o "(athena-assignment-client|athena-domain-server|athena-server)\S+" \ + | xargs -I {} sh -c 'if systemctl is-enabled {} >/dev/null ; then echo {} ; fi' \ + | paste -s -d'|' \ + | head -c -1` + + # shutdown athena servers + echo -n $ATHENA_ACTIVE | xargs -d'|' systemctl stop # copy the server files over cp /etc/opt/athena/* /etc/opt/vircadia cp -R /var/lib/athena/* /var/lib/vircadia chown -R vircadia:vircadia /var/lib/vircadia/* - find /var/lib/athena -maxdepth 3 -path "*\.local/share" -execdir sh -c 'cd share; ln -s ../.. Vircadia - dev' ';' + find /var/lib/athena -maxdepth 3 -path "*\.local/share" -execdir sh -c 'cd share; ln -s ../.. "Vircadia - dev"' ';' find /var/lib/athena -maxdepth 3 -path "*\.local/share" -execdir sh -c 'cd share; ln -s ../.. Vircadia' ';' VIRCADIA_ACTIVE=`echo $ATHENA_ACTIVE | sed 's/athena/vircadia/g'` VIRCADIA_ENABLED=`echo $ATHENA_ENABLED | sed 's/athena/vircadia/g'` - disableList $ATHENA_ENABLED - enableList $VIRCADIA_ENABLED - startList $VIRCADIA_ACTIVE + echo -n $ATHENA_ENABLED | xargs -d'|' systemctl disable + echo -n $VIRCADIA_ENABLED | xargs -d'|' systemctl enable + echo -n $VIRCADIA_ACTIVE | xargs -d'|' systemctl start else /opt/vircadia/new-server default 40100 systemctl enable vircadia-server@default.target From db9139f75c79d2b148148ff4b29e3b0785c24f0b Mon Sep 17 00:00:00 2001 From: Heather Anderson Date: Sat, 6 Jun 2020 06:31:14 +0000 Subject: [PATCH 138/160] Added more "echo -n" commands to prevent unusable end-of-line characters --- pkg-scripts/server-postinst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg-scripts/server-postinst b/pkg-scripts/server-postinst index 34c9c5661a..b1071778d8 100755 --- a/pkg-scripts/server-postinst +++ b/pkg-scripts/server-postinst @@ -46,8 +46,8 @@ case "$1" in find /var/lib/athena -maxdepth 3 -path "*\.local/share" -execdir sh -c 'cd share; ln -s ../.. "Vircadia - dev"' ';' find /var/lib/athena -maxdepth 3 -path "*\.local/share" -execdir sh -c 'cd share; ln -s ../.. Vircadia' ';' - VIRCADIA_ACTIVE=`echo $ATHENA_ACTIVE | sed 's/athena/vircadia/g'` - VIRCADIA_ENABLED=`echo $ATHENA_ENABLED | sed 's/athena/vircadia/g'` + VIRCADIA_ACTIVE=`echo -n $ATHENA_ACTIVE | sed 's/athena/vircadia/g'` + VIRCADIA_ENABLED=`echo -n $ATHENA_ENABLED | sed 's/athena/vircadia/g'` echo -n $ATHENA_ENABLED | xargs -d'|' systemctl disable echo -n $VIRCADIA_ENABLED | xargs -d'|' systemctl enable From b74ccef418aaf471c6c01772a5847b0e318ae4d3 Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Sat, 6 Jun 2020 18:35:02 -0400 Subject: [PATCH 139/160] Address CR from Thoys and David. --- interface/resources/html/tabletHelp.html | 6 +++--- interface/src/Application.cpp | 3 +-- interface/src/Menu.cpp | 4 ++-- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/interface/resources/html/tabletHelp.html b/interface/resources/html/tabletHelp.html index b67b0c4689..17b41a1979 100644 --- a/interface/resources/html/tabletHelp.html +++ b/interface/resources/html/tabletHelp.html @@ -77,9 +77,9 @@ var handControllerImageURL = null; var index = 0; var count = 3; - var handControllerRefURL = "https://docs.vircadia.com/explore/get-started/vr-controls.html#vr-controls"; - var keyboardRefURL = "https://docs.vircadia.com/explore/get-started/desktop.html#movement-controls"; - var gamepadRefURL = "https://docs.vircadia.com/explore/get-started/vr-controls.html#gamepad"; + var handControllerRefURL = "https://docs.vircadia.dev/explore/get-started/vr-controls.html#vr-controls"; + var keyboardRefURL = "https://docs.vircadia.dev/explore/get-started/desktop.html#movement-controls"; + var gamepadRefURL = "https://docs.vircadia.dev/explore/get-started/vr-controls.html#gamepad"; function showKbm() { document.getElementById("main_image").setAttribute("src", "img/tablet-help-keyboard.jpg"); diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index e68e3a2de1..611ba19e0b 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -3788,8 +3788,7 @@ void Application::setPreferredCursor(const QString& cursorName) { if (_displayPlugin && _displayPlugin->isHmd()) { _preferredCursor.set(cursorName.isEmpty() ? DEFAULT_CURSOR_NAME : cursorName); - } - else { + } else { _preferredCursor.set(cursorName.isEmpty() ? Cursor::Manager::getIconName(Cursor::Icon::SYSTEM) : cursorName); } diff --git a/interface/src/Menu.cpp b/interface/src/Menu.cpp index bc095b3beb..f9dd3fb468 100644 --- a/interface/src/Menu.cpp +++ b/interface/src/Menu.cpp @@ -782,7 +782,7 @@ Menu::Menu() { // Help/Application menu ---------------------------------- MenuWrapper * helpMenu = addMenu("Help"); - // Help > About Vircadiaa + // Help > About Vircadia action = addActionToQMenuAndActionHash(helpMenu, "About Vircadia"); connect(action, &QAction::triggered, [] { qApp->showDialog(QString("hifi/dialogs/AboutDialog.qml"), @@ -793,7 +793,7 @@ Menu::Menu() { // Help > Vircadia Docs action = addActionToQMenuAndActionHash(helpMenu, "Online Documentation"); connect(action, &QAction::triggered, qApp, [] { - QDesktopServices::openUrl(QUrl("https://apidocs.vircadia.dev/")); + QDesktopServices::openUrl(QUrl("https://docs.vircadia.dev/")); }); // Help > Vircadia Forum From 01b02881dc3a0eb7fc4dadc0ec654d05477ae836 Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Sat, 6 Jun 2020 18:40:19 -0400 Subject: [PATCH 140/160] Height, width, and centering updates. --- interface/resources/qml/LoginDialog.qml | 2 ++ interface/resources/qml/hifi/dialogs/TabletAboutDialog.qml | 5 +++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/interface/resources/qml/LoginDialog.qml b/interface/resources/qml/LoginDialog.qml index fea0813e14..375d68ad26 100644 --- a/interface/resources/qml/LoginDialog.qml +++ b/interface/resources/qml/LoginDialog.qml @@ -85,6 +85,8 @@ FocusScope { Image { id: banner anchors.centerIn: parent + sourceSize.width: 500 + sourceSize.height: 91 source: "../images/vircadia-logo.svg" horizontalAlignment: Image.AlignHCenter } diff --git a/interface/resources/qml/hifi/dialogs/TabletAboutDialog.qml b/interface/resources/qml/hifi/dialogs/TabletAboutDialog.qml index e65bfa5ebb..92da0b0c9a 100644 --- a/interface/resources/qml/hifi/dialogs/TabletAboutDialog.qml +++ b/interface/resources/qml/hifi/dialogs/TabletAboutDialog.qml @@ -23,8 +23,9 @@ Rectangle { spacing: 5 Image { - sourceSize.width: 295 - sourceSize.height: 75 + anchors.centerIn: parent + sourceSize.width: 358 + sourceSize.height: 65 source: "../../../images/about-vircadia.png" } Item { height: 30; width: 1 } From 085b9e11c5059bc43f5e76aa6578305df203f547 Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Sat, 6 Jun 2020 20:21:17 -0400 Subject: [PATCH 141/160] Fix tabletAboutDialog fit for logo. --- interface/resources/qml/hifi/dialogs/TabletAboutDialog.qml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/interface/resources/qml/hifi/dialogs/TabletAboutDialog.qml b/interface/resources/qml/hifi/dialogs/TabletAboutDialog.qml index ae535cae8a..cbaa5c7b08 100644 --- a/interface/resources/qml/hifi/dialogs/TabletAboutDialog.qml +++ b/interface/resources/qml/hifi/dialogs/TabletAboutDialog.qml @@ -23,10 +23,9 @@ Rectangle { spacing: 5 Image { - anchors.centerIn: parent - sourceSize.width: 358 - sourceSize.height: 65 - source: "../../../images/about-vircadia.png" + width: 400; height: 73 + fillMode: Image.PreserveAspectFit + source: "../../../images/vircadia-logo.svg" } Item { height: 30; width: 1 } Column { From 00f64e3532892eb4106bdb841bda1a6f5632fe1f Mon Sep 17 00:00:00 2001 From: Heather Anderson Date: Sun, 7 Jun 2020 02:10:41 +0000 Subject: [PATCH 142/160] First attempt at updating the AWS Linux installation scripts. Ubuntu scripts should restart on upgrade and shutdown on uninstall --- pkg-scripts/server-postinst | 4 +++ pkg-scripts/server-prerm | 4 +++ pkg-scripts/vircadia-server.spec | 51 ++++++++++++++++++++++++++++---- 3 files changed, 54 insertions(+), 5 deletions(-) diff --git a/pkg-scripts/server-postinst b/pkg-scripts/server-postinst index b1071778d8..ad7389aa2c 100755 --- a/pkg-scripts/server-postinst +++ b/pkg-scripts/server-postinst @@ -57,6 +57,10 @@ case "$1" in systemctl enable vircadia-server@default.target systemctl start vircadia-server@default.target fi + else + systemctl list-units \ + | grep -P -o "(vircadia-assignment-client|vircadia-domain-server|vircadia-server)\S+" \ + | xargs systemctl restart fi ;; diff --git a/pkg-scripts/server-prerm b/pkg-scripts/server-prerm index 7a6538284b..de15128778 100755 --- a/pkg-scripts/server-prerm +++ b/pkg-scripts/server-prerm @@ -19,6 +19,10 @@ set -e case "$1" in remove) + systemctl list-units \ + | grep -P -o "(vircadia-assignment-client|vircadia-domain-server|vircadia-server)\S+" \ + | xargs systemctl stop + find -P /opt/vircadia/lib -type l -delete ;; diff --git a/pkg-scripts/vircadia-server.spec b/pkg-scripts/vircadia-server.spec index 0f28db50c8..61e87ee333 100644 --- a/pkg-scripts/vircadia-server.spec +++ b/pkg-scripts/vircadia-server.spec @@ -88,11 +88,6 @@ mkdir -p /etc/opt/vircadia mkdir -p /var/lib/vircadia && chown vircadia:vircadia /var/lib/vircadia && chmod 775 /var/lib/vircadia ldconfig -n /opt/vircadia/lib -if [ ! -d "/var/lib/vircadia/default" ]; then - /opt/vircadia/new-server default 40100 - systemctl enable vircadia-server@default.target - systemctl start vircadia-server@default.target -fi %systemd_post vircadia-assignment-client.service %systemd_post vircadia-assignment-client@.service @@ -103,8 +98,54 @@ fi %systemd_post vircadia-server.target %systemd_post vircadia-server@.target +if [ ! -d "/var/lib/vircadia/default" ]; then + if [ -d "/var/lib/athena" ]; then + ATHENA_ACTIVE=`systemctl list-units \ + | grep -P -o "(athena-assignment-client|athena-domain-server|athena-server)\S+" \ + | paste -s -d'|' \ + | head -c -1` + ATHENA_ENABLED=`systemctl list-units --state=loaded \ + | grep -P -o "(athena-assignment-client|athena-domain-server|athena-server)\S+" \ + | xargs -I {} sh -c 'if systemctl is-enabled {} >/dev/null ; then echo {} ; fi' \ + | paste -s -d'|' \ + | head -c -1` + + # shutdown athena servers + echo -n $ATHENA_ACTIVE | xargs -d'|' systemctl stop + + # copy the server files over + cp /etc/opt/athena/* /etc/opt/vircadia + cp -R /var/lib/athena/* /var/lib/vircadia + chown -R vircadia:vircadia /var/lib/vircadia/* + find /var/lib/athena -maxdepth 3 -path "*\.local/share" -execdir sh -c 'cd share; ln -s ../.. "Vircadia - dev"' ';' + find /var/lib/athena -maxdepth 3 -path "*\.local/share" -execdir sh -c 'cd share; ln -s ../.. Vircadia' ';' + + VIRCADIA_ACTIVE=`echo -n $ATHENA_ACTIVE | sed 's/athena/vircadia/g'` + VIRCADIA_ENABLED=`echo -n $ATHENA_ENABLED | sed 's/athena/vircadia/g'` + + echo -n $ATHENA_ENABLED | xargs -d'|' systemctl disable + echo -n $VIRCADIA_ENABLED | xargs -d'|' systemctl enable + echo -n $VIRCADIA_ACTIVE | xargs -d'|' systemctl start + else + /opt/vircadia/new-server default 40100 + systemctl enable vircadia-server@default.target + systemctl start vircadia-server@default.target + fi +else + systemctl list-units \ + | grep -P -o "(vircadia-assignment-client|vircadia-domain-server|vircadia-server)\S+" \ + | xargs systemctl restart +fi + %preun + +if [ "$1" -eq 0 ]; then + systemctl list-units \ + | grep -P -o "(vircadia-assignment-client|vircadia-domain-server|vircadia-server)\S+" \ + | xargs systemctl stop +fi + %systemd_preun vircadia-server.target %systemd_preun vircadia-server@.target %systemd_preun vircadia-assignment-client.service From 529a39d3fb2e60cef789307ef77396ba4d89cec5 Mon Sep 17 00:00:00 2001 From: Heather Anderson Date: Sun, 7 Jun 2020 04:46:04 +0000 Subject: [PATCH 143/160] Smoketesting AWS Linux install/uninstall/upgrade actions --- pkg-scripts/make-rpm-server | 2 ++ pkg-scripts/server-postinst | 4 ++-- pkg-scripts/vircadia-server.spec | 5 +++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/pkg-scripts/make-rpm-server b/pkg-scripts/make-rpm-server index 57231e4f55..20ac76d4b0 100755 --- a/pkg-scripts/make-rpm-server +++ b/pkg-scripts/make-rpm-server @@ -16,6 +16,7 @@ SOFILES=`ls \ $VIRCADIA/qt5-install/lib/libQt5Script.so.*.*.* \ $VIRCADIA/qt5-install/lib/libQt5WebSockets.so.*.*.* \ $VIRCADIA/qt5-install/lib/libQt5Qml.so.*.*.* \ + $VIRCADIA/qt5-install/lib/libQt5Quick.so.*.*.* \ $VIRCADIA/qt5-install/lib/libQt5ScriptTools.so.*.*.* \ | sed 's/\./\\\./g' \ | paste -d'|' -s` @@ -32,6 +33,7 @@ DEPENDS=mesa-libGL,`ls \ $VIRCADIA/qt5-install/lib/libQt5Script.so.*.*.* \ $VIRCADIA/qt5-install/lib/libQt5WebSockets.so.*.*.* \ $VIRCADIA/qt5-install/lib/libQt5Qml.so.*.*.* \ + $VIRCADIA/qt5-install/lib/libQt5Quick.so.*.*.* \ $VIRCADIA/qt5-install/lib/libQt5ScriptTools.so.*.*.* \ $VIRCADIA/build/assignment-client/plugins/*.so \ $VIRCADIA/build/assignment-client/plugins/*/*.so \ diff --git a/pkg-scripts/server-postinst b/pkg-scripts/server-postinst index ad7389aa2c..cb06adbae0 100755 --- a/pkg-scripts/server-postinst +++ b/pkg-scripts/server-postinst @@ -43,8 +43,8 @@ case "$1" in cp /etc/opt/athena/* /etc/opt/vircadia cp -R /var/lib/athena/* /var/lib/vircadia chown -R vircadia:vircadia /var/lib/vircadia/* - find /var/lib/athena -maxdepth 3 -path "*\.local/share" -execdir sh -c 'cd share; ln -s ../.. "Vircadia - dev"' ';' - find /var/lib/athena -maxdepth 3 -path "*\.local/share" -execdir sh -c 'cd share; ln -s ../.. Vircadia' ';' + find /var/lib/vircadia -maxdepth 3 -path "*\.local/share" -execdir sh -c 'cd share; ln -s ../.. "Vircadia - dev"' ';' + find /var/lib/vircadia -maxdepth 3 -path "*\.local/share" -execdir sh -c 'cd share; ln -s ../.. Vircadia' ';' VIRCADIA_ACTIVE=`echo -n $ATHENA_ACTIVE | sed 's/athena/vircadia/g'` VIRCADIA_ENABLED=`echo -n $ATHENA_ENABLED | sed 's/athena/vircadia/g'` diff --git a/pkg-scripts/vircadia-server.spec b/pkg-scripts/vircadia-server.spec index 61e87ee333..3e0eed896e 100644 --- a/pkg-scripts/vircadia-server.spec +++ b/pkg-scripts/vircadia-server.spec @@ -50,6 +50,7 @@ install -m 0644 -t $RPM_BUILD_ROOT/opt/vircadia/lib $VIRCADIA/qt5-install/lib/li install -m 0644 -t $RPM_BUILD_ROOT/opt/vircadia/lib $VIRCADIA/qt5-install/lib/libQt5Script.so.*.*.* install -m 0644 -t $RPM_BUILD_ROOT/opt/vircadia/lib $VIRCADIA/qt5-install/lib/libQt5WebSockets.so.*.*.* install -m 0644 -t $RPM_BUILD_ROOT/opt/vircadia/lib $VIRCADIA/qt5-install/lib/libQt5Qml.so.*.*.* +install -m 0644 -t $RPM_BUILD_ROOT/opt/vircadia/lib $VIRCADIA/qt5-install/lib/libQt5Quick.so.*.*.* install -m 0644 -t $RPM_BUILD_ROOT/opt/vircadia/lib $VIRCADIA/qt5-install/lib/libQt5ScriptTools.so.*.*.* install -d $RPM_BUILD_ROOT/usr/lib/systemd/system install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $VIRCADIA/source/pkg-scripts/vircadia-assignment-client.service @@ -117,8 +118,8 @@ if [ ! -d "/var/lib/vircadia/default" ]; then cp /etc/opt/athena/* /etc/opt/vircadia cp -R /var/lib/athena/* /var/lib/vircadia chown -R vircadia:vircadia /var/lib/vircadia/* - find /var/lib/athena -maxdepth 3 -path "*\.local/share" -execdir sh -c 'cd share; ln -s ../.. "Vircadia - dev"' ';' - find /var/lib/athena -maxdepth 3 -path "*\.local/share" -execdir sh -c 'cd share; ln -s ../.. Vircadia' ';' + find /var/lib/vircadia -maxdepth 3 -path "*\.local/share" -execdir sh -c 'cd share; ln -s ../.. "Vircadia - dev"' ';' + find /var/lib/vircadia -maxdepth 3 -path "*\.local/share" -execdir sh -c 'cd share; ln -s ../.. Vircadia' ';' VIRCADIA_ACTIVE=`echo -n $ATHENA_ACTIVE | sed 's/athena/vircadia/g'` VIRCADIA_ENABLED=`echo -n $ATHENA_ENABLED | sed 's/athena/vircadia/g'` From 7dd5a2773c6e2a5af5bbaf1e6ff90735db68536a Mon Sep 17 00:00:00 2001 From: Dale Glass Date: Sun, 7 Jun 2020 12:51:38 +0200 Subject: [PATCH 144/160] Use newer opus to fix illegal instruction in libopusCodec.so This will build the very latest Opus available (May 30 2020). The absolute minimum version of Opus is commit 927de8453c502586c03e25c169ec08f2a93ebc02, released on April 21, 2020. This incorporates a fix for xiph/opus#154 --- cmake/ports/opus/portfile.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/ports/opus/portfile.cmake b/cmake/ports/opus/portfile.cmake index bf23718df8..e5518351f8 100644 --- a/cmake/ports/opus/portfile.cmake +++ b/cmake/ports/opus/portfile.cmake @@ -6,9 +6,9 @@ vcpkg_from_github( REPO xiph/opus REF - e85ed7726db5d677c9c0677298ea0cb9c65bdd23 + 72a3a6c13329869000b34a12ba27d8bfdfbc22b3 SHA512 - a8c7e5bf383c06f1fdffd44d9b5f658f31eb4800cb59d12da95ddaeb5646f7a7b03025f4663362b888b1374d4cc69154f006ba07b5840ec61ddc1a1af01d6c54 + 590b852e966a497e33d129b58bc07d1205fe8fea9b158334cd8a3c7f539332ef9702bba4a37bd0be83eb5f04a218cef87645251899f099695d01c1eb8ea6e2fd HEAD_REF master) From ef5fc91b450d58540f24b7a81661d43c8ca3c298 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Mon, 8 Jun 2020 07:44:32 +1200 Subject: [PATCH 145/160] Remove path from boilerplate in coding standard --- CODING_STANDARD.md | 1 - 1 file changed, 1 deletion(-) diff --git a/CODING_STANDARD.md b/CODING_STANDARD.md index e582ac305f..9e76b5ee5f 100644 --- a/CODING_STANDARD.md +++ b/CODING_STANDARD.md @@ -983,7 +983,6 @@ second copyright line, copyright Vircadia contributors. ```cpp // // NodeList.h -// libraries/shared/src // // Created by Stephen Birarda on 15 Feb 2013. // Copyright 2013 High Fidelity, Inc. From cf71c9b1960456230536f362cee017a670bb26d5 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Mon, 8 Jun 2020 07:47:41 +1200 Subject: [PATCH 146/160] Update description --- CODING_STANDARD.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CODING_STANDARD.md b/CODING_STANDARD.md index 9e76b5ee5f..1c2f3cb27e 100644 --- a/CODING_STANDARD.md +++ b/CODING_STANDARD.md @@ -976,9 +976,9 @@ while (true) { #### [4.3.4] Source files (header and implementation) must include a boilerplate. -Boilerplates should include the filename, location, creator, copyright Vircadia contributors, and Apache 2.0 License -information. This should be placed at the top of the file. If editing an existing file that is copyright High Fidelity, add a -second copyright line, copyright Vircadia contributors. +Boilerplates should include the filename, creator, copyright Vircadia contributors, and Apache 2.0 License information. +This should be placed at the top of the file. If editing an existing file that is copyright High Fidelity, add a second +copyright line, copyright Vircadia contributors. ```cpp // From 6df34d2a899f1a402b2be4b7a6f812e13f6057d2 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Mon, 8 Jun 2020 08:10:19 +1200 Subject: [PATCH 147/160] Reduce minimum inspect distance --- scripts/system/inspect.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/scripts/system/inspect.js b/scripts/system/inspect.js index 17260a4358..9aacfd14c2 100644 --- a/scripts/system/inspect.js +++ b/scripts/system/inspect.js @@ -123,10 +123,11 @@ function orientationOf(vector) { } function handleRadialMode(dx, dy) { + var MIN_INSPECT_RADIUS = 0.1; azimuth += dx / AZIMUTH_RATE; radius += radius * dy * RADIUS_RATE; - if (radius < 1) { - radius = 1; + if (radius < MIN_INSPECT_RADIUS) { + radius = MIN_INSPECT_RADIUS; } vector = { From db1ff76ba5a6dd617b03a4dce1a1ef3b23c516e6 Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Sun, 7 Jun 2020 17:15:11 -0400 Subject: [PATCH 148/160] Update installer/uninstall icons. --- cmake/installer/installer-header.bmp | Bin 102656 -> 102654 bytes cmake/installer/installer.ico | Bin 287934 -> 125193 bytes cmake/installer/uninstaller-header.bmp | Bin 102656 -> 102654 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/cmake/installer/installer-header.bmp b/cmake/installer/installer-header.bmp index 2d262d3ef9d4b699eead2193bfab5e8ead4bc004..de8448ed44c17f3b918e47d1715a83058d1b9a53 100644 GIT binary patch literal 102654 zcmeI533OFOn#XT22w_V!Cd9CY9Yg{GfdE+uVGT1 zK+`M@Ef|{?Bxu`oYdenEXKas0lo=425r;WSi$aimbMCwE)vH&__wIc!3+VSd#W{8B z{=cs(x9U&bx2KJ$csj%|NiYnfgJBq*Lkwf7VHhDsjH}(`bR+AZ2OtQ7Ac#uh%{SlN z#!*RG34*Z8vSrIWw|FLY!w72XPuG< z2?C+4tc-us@{2FNK*Rvhx^-)&FDNMB#XtV|V_{)oSXh`PV5bBRGD1Q^>ej8>vSrKk z^z^M;w=z8=Gc%KkBO@bOyT$6&tJzuk>DEs_{dB^F2?+@aQBhH0VPT=6p}g2){`~nu zPJ*a@-g@gTesONvvstq1Y}g3H*aQ2!!S;rI>p4ZXV2zO@f(v(4;qHCVZ#QN z5WtTI*R5N}_s9aTUAxw-Su_5W4)P#zn=p0iRDP9y`|Y>7fh8oE@42*S(4Ya6oj-rx z)9j{i-@fdu?7_Nq>qbOG#Kgo1X6e?g8;kPm!S(CcdwMfrfu~NL;@b_wh>3}bh=>Ra z3kwOc-Z|=qJV@Lo96o&5vnox}($aD@@UlshCb99KJb98owSD_`b_ziBAb$$L$4ZSF zHR8|W_o5p&Zsa>F#j?^jd-wj?b>WSmo8mmuaDs5=jXF1f~Z-pT)Dz8*YNQ0?!L5Y)ruEv+vf8T zq!lYxu(NS-al+qH4f|kNSQy{w)~#FFcn}H;3;8I5s96#d6Zz#T3}*D`(frvjzx1rT<^>GQBhHXK=2@= zcJ0~?8Z=;shGF#R(SwiWJt$DCRxQ3ID=Ui+1c0QZBwi328d|SjJ-$VFuN^_$4!r;V z`}`{1vSkYZeDlpWd?SC4%2=>q0n^AIaL{>BM)>pu;z5DKhYz#CSd17kLeL1bZ{J=B zA&A?7$jC^xR+EyF0ARo;h=7X=$k(Xt8(i z-l(Xk=;-LijT>8iwP?{IEiEl4C+EV23%V$Rs9D~4;|=B}!!UO5-pwCoW@ajf$9u4T z{rXBx0Pr4^Z*d9Y=Zf$FAD%sX_9*{q-h;whR)T>%Nc=L%%F5z>$HRZ9frs~CojP^+ zQ^7zUBz~Ff+qaMR9iw;e-nt9IdoVOKR3~!^d64*Ja`Wa*<~ttir3xjy2li>pfn6# z3xn6{!O{9=IZ_{vG=Ntd!tWcw;cz$<4u>M(cM)*#92 zO*HI@hCPj8cZ^wHi8ag1P2i;_@KRIwbyIk;8SH8fJFU_JcC>^S;$V9mY;OhITD!}0 zZQ$9q@Ju_iJl)gRrR!Z0rJ$$HT9>!iKJ}p&LB* zkXat>ZkBaDU~Nyclq5h&FDUK}YkI?)L?}vxqCT*yuUS_1gB3}zJQ)g;VOcUPOM!w^ zvn=fo`Dw5u4VDam#pz~QG|()$gJ9ucv&?9a78OBV3 z(XNs?6-G^ik<(zrbQnIvEEzLl*en=2+bn};!{9kEC1p4HgB{3g*FNIzOX6adImLAKY`wDny1w6D8x~?)y{A%d3 z8XjEZE)NvL10~R@1Ufzf9o9nob^QppOkX z5Bk`U_n=@y=0Vwpz8(~9$UK+|`GO67J-9%&q057&4VedJ8;*6^ka^H!!*MDbDm*v? zhVeF>1A}v1HWWO#08(8xOjg+t^PphEBHJFUN*nSk`OdAM4B>2OZH1x0c0+S3pzBY7kg-PaCXzqs0hJpueZ-qWK6t+UkgSNNAQTSHKJeULN zf(`Xsq3J=JTOsekVsjttR016yf%ZOIVR@T%SKE|S)mC`tnob_MwH3N=N|iROYu=QW zS~sO04<460h2Y&I)MWIiDI&VD@gM4a-aOT(h-a1&$T&VBrTr-kqLhV zA7#JpG{5!C%&jNh)-Emk$V;~@L>qncpK84_iQI@Fi;-a{#d70S@%Oewd>PYg@!-w(-5oKWT$#r!kvk-zPQ~UH1#7+;9$S3x&ZWuUlm0gX*qT znL*cxpbXKW6w8e`f4p0GU?^W|zUAV@FOg{q06zKOKRSbC;FV76NLqROz{P>_pXbiu zV@A>nfrwK6TZCBr&}n9u2iI4mZo`+DE#!6kv+*F#@wz^5o^icYflL!VM}Z-9ha}0J zJ4X=PKSa{*+P+Q5gNTDf=!ic=GV?O4?no?$>slP8^}c5&c&gce0k~U-a^!p?&QI6O zSMA>rU#iee(ABF~kvR$&p}Q+rt{|xdvCTsyp>pHE^}+DN57%^KM$*b5h*UpU`o}HA$gaJu?@Hq+?xjQ74EVk2vB>eNA-j*{U`rwhf zvs#eM$`Ge|WfH#8Q9|!~M}tRRx{mfK(+IWHNtBtbMg(P)4yD*?ymC?(Y^i;E3fCN;pz`waN#nDGkRT6{9-U@JQvLA556Wyvh*B>! zu3lb%WUvrIQW68{6zN6IkGCMH(v$lNvEGkS1dnnJBM5qi(C+sTK^dzD89^n*zh@cGA;Ye&zanl{;-3rCe7!FGI@!<9A z*O57rC$zF!?01SN5pLYLp&Kd^r3+EEBYCc0zb=FzVnN9t+K)n%2;)YL;JZsnO!%(j zD)%P}gXg5`^SKD`#rv#z0i_*ujR?vR9kSRje2CYEK6j);Qo8e(9ho3rR_S%5->)uS zIh@gzp zA&BiDgm||??;Yvz{tvM$f8oM;@Ot?ygO|zm^pt)~DZ}eC zGls|l9jD(BpVe8_Bg6eAGeL9f<7whLEDM2~-(rdRb$e;IR>{kdI)XAvhak2OA1K|C zW~Tf1AV0HJTGy?RU_9t|!1g=!o5~XC67u0Xjr^DLQFwki7U@Mm?#25>Pr<{lKvqX! z8moeEt6UTdv3@f+(hFio@Uh;l(7YoZGq5YW{=&R4n4lUetWz1GcUhoBh>{PLQ5Le; zPKz!fAFI>IKH{USdSQN^&G5@#e~l;^|Gaut=q0sxg86k%4-{A2xanx2$y8jw?6dr= zrTAayH?#4})v6=NVz~uD79+3s31UYGv0fX7jvaibdXOy}ww7d=2C2wV3?vFU#li*n z5aARLFVod|y+Eaec)xEgc!afQ9U?f@Up=D^;qxHyGFI2Y1XjfArJ z8B9<;71pneasaZ7q0|eFOe`ZPZ63;bEckGp#?C&Nl9=%N(IdJHyI$DNcf{&Cy|PEk zgB4f4ce=_1DwOw%|JGNK`M@t!zK+1llywA0dO_?IA>6YS&Klj>?=&$%^;8_K7Dr;` z_=C?Nq}3(lWjc-05qu!4JIdfl?E3m&*Vi5fkFe^jLj!d+BRd>C0ucHx(tRX=q%7Ax!d76e`<*AZkf;#s9wZbT5ouB~u$ZXBC3 z-At7pJ;F5AQ_+n?STmO|U)Cw@k5iXH=*wn8o7rs2@J?+eu_?3q@_ZA15wec#BCI#- z5TPto9m4V;l-=c(F+HmwFb!YP!E5lk4ms*%tz9ddvWa#ySuCn5DnkdP>IO3~r6222 zr*UMTN=f2$NR`s*jT<*~dDwWIzA4@EU`4lL-6C>;yxx#4Mt57tC;5*FSns@2s3QnU z>rjVMtZdXFi+w$a%vZ*s0sOR9LtVGJn7@v_UaHeL8lEl*>&Sk#bLYO$Wm~`Q5k8Mj z=Co74dHf3aQMrEA_V|5)&;J2bf6?pK`7=9KU zO&K3p>GgHRMY_RQed*3RUB;C-a{EKFuf&JvH;-QdpWpIeMYq+u732WbV#C6fdb#n| zjX;th$Xy`+S185GMja~g8(Z$R;Q)U>42G(VgZ0oa(IW#$zFj1Q82LzlXY1 zPCtg`{c*J5QLQvA>yKZmL!9PO>Jd-rZh&>@@(b+)c z1AH(_s&q)YLMMS|`6VC{JJ2wfG&3!1PHIs%|jK%%g@562>4S2g(|TEcV;N zVr?QP^!`q0@Ca+tI>b?iAdLvhC)1u|e{AQB{_VWjZ+#~Y*bHER}?T<|!PkGM*w+Dkqxy*2sA$}VXto{4}5J0E85WL;~*yKF!pRMn{99gP%ak`|HdOM9c zLIwmuX&qJt%8opZ@}yWT_NUc8y1wvsJNf_i-n)1b-B~-y14GwiRqTU!PKG?BS9?u# zdoXA!{?e8$DsKhHvj_vJAP8v@1f_LY>AVx8?#R=-JTI)J(!cSZWp-3yO9;VHLSBsI z3pTN<^7oYP2)Ov!+hQ=hr57`ci7}{K^oUjd*59Jp1&M z!FOsigHnc%Rt|yQOHB{0i~EmECEclac4kYAIf|0-tCcU0OTsy3EM;_Xd;JCf|Mcot<6;4U$|? zIz7~7&K@WJLct#rv)vx_g&EB-jAO@+Ssv`rp#yJ5fr_gi=~frD+qnWxXPNXrk1GI) z`F=fET3Tut#_{9FEn_l!ifI0Or*@lH;ODWT=&x{e1)xv9>A}Q&(M`U0o=1)x;oV0b zwCO3QGDmYq;ye8c-0HU&`sG32C2ku^FryiUap=$?{*cv0XdkSKE8zLU8SckJUBBV$ z`SDPAJq$|2;I(>iw7yx6G=Ntd!tWcx;cz(QD!+?>gZG%_z`d|P687C^mc3E1HyVBu z4SO2H?ijPYazDHh3opmQOHJUVrts^g@M1IA)f{#gX)t0M44)3eXP9N!Oc*)~hR!z2;5jfj2L|Q9z`2k<57OsD+5)rmUkItWkdh0@ ziy&z+B;|QM=u5+f4NaT*!X#ERJM^I{Rv_iHzHmnReG2mz?adz#l|1ORVIz+XQ4jjq zFxF*5*@MktM+?(~mJOd5Z0Pae(|$duvtdt{4efX^846rBTg;N4`$4SVS#wC;`GNpCJG+1OjTR~zguCcax0WQ=yxj=Jm}gA&3zEx3M~(|^LVfW zZ0%_7gATSr!Gpa$`(O}TA?Cr6u6@w86;2IoD-6to3m|o&XCGWtF|0B^okS1>K@bE% z5ClOG1VIo4K@bE%5ClOG1VIo4K@bE%5ClOG1VIo4K@bE%5ClOG1VIo4K@bE%5ClOG I1W_6MKRofK2mk;8 literal 102656 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 I1W_6MKRofK2mk;8 literal 102656 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 Date: Sun, 7 Jun 2020 20:43:38 -0400 Subject: [PATCH 149/160] Update interface and server-console icons. --- interface/icon/interface-beta.icns | Bin 61280 -> 154826 bytes interface/icon/interface.icns | Bin 180346 -> 209502 bytes server-console/resources/console-beta.icns | Bin 72980 -> 154826 bytes server-console/resources/console-beta.ico | Bin 287934 -> 17622 bytes server-console/resources/console-beta.png | Bin 103352 -> 99577 bytes .../resources/console-notification.png | Bin 172810 -> 138846 bytes .../resources/console-tray-osx-stopped.png | Bin 3290 -> 930 bytes .../resources/console-tray-osx-stopped@2x.png | Bin 5051 -> 1870 bytes .../resources/console-tray-osx-stopping.png | Bin 3296 -> 937 bytes .../console-tray-osx-stopping@2x.png | Bin 5068 -> 1873 bytes server-console/resources/console-tray-osx.png | Bin 3109 -> 883 bytes .../resources/console-tray-osx@2x.png | Bin 5135 -> 1793 bytes .../resources/console-tray-stopped.ico | Bin 5430 -> 4286 bytes .../resources/console-tray-win-stopped.png | Bin 2898 -> 836 bytes .../resources/console-tray-win-stopped@2x.png | Bin 4542 -> 1918 bytes .../resources/console-tray-win-stopping.png | Bin 2907 -> 836 bytes .../console-tray-win-stopping@2x.png | Bin 4544 -> 1907 bytes server-console/resources/console-tray-win.png | Bin 2914 -> 798 bytes .../resources/console-tray-win@2x.png | Bin 4628 -> 1806 bytes server-console/resources/console-tray.ico | Bin 5158 -> 4286 bytes server-console/resources/console.icns | Bin 72980 -> 209502 bytes server-console/resources/console.ico | Bin 287934 -> 23652 bytes server-console/resources/console.png | Bin 98024 -> 204144 bytes 23 files changed, 0 insertions(+), 0 deletions(-) diff --git a/interface/icon/interface-beta.icns b/interface/icon/interface-beta.icns index 39d2316046f550bd315c8f4f02e619690b3f7488..9044dbfbf78f73abc1170ca0b1570f8d9124343d 100644 GIT binary patch literal 154826 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%0A88b3Nq^zJ=>CXl;(6i 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%0AE=ieA)qk%p<;ng;|BL!6@ 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 Vl(SOKxJ!AD%#qrNJ}0=3|Jj|JH}wDj literal 180346 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≷AR zJI&h)YhXfEEg}E*uY;-_!!Dc)KDsF!QzoMp>)mUxodGXw?Ibkk{FzgoL3X; z{xL$(k_g-Ec(DkS^9TXXnIduKFHKi$U&14Ika2VD0IBsEEsK_3nP+dgkI%l{=mS~1 zQBy0&jRut<&>8W&9-9M?u@++vb1DqIWh9rPZ)-^bU4ZZnzd22>~mEu+tw&j0D zl2PS0;K2fc%0N@HJ<1CcdDTuA`Cc9QH9e5tqcMe^bZZ{uS7ZG(CD#1CtuuJ}>D!*O zv{B3>xTVVPa@PGetRl&o_{L@`wxFn|}bGOue?!Q5l?0bICEUwno=EVQyLk|-jy zE2rrHhwsJ%PPC>kMSyNQEkRUzw6kfm_0XGwl2Y-1-=2nFo`lEYpdido4c=tb7F+Q& z9{p!NNUkUqMfgRW2a&;TEOZ2{t3f>7fPxXZQlfWP9I42Qwu2iP6{KPrU93va8=WLq zUP#Gqo&pIrA%rj6fTDa`Z!R7^yBu*Jj|7l*=4Unc-nDu{>r0dshMIWL{G1xgEGZdI zNXyFck1Tp>AKFKkPX!Ozm2JL8hty^582psnDrtnNI8Pz%)=AY^Cz*4xY3b;v?(WI& zhOYWxfNINc8k2BecKYD7h4_z$%;G+;Dsy8rv{_>n{4_zTiTY4W9uIa| zo+1k+%vf`{mm=s<7XX?w5wfWml)S7LXomtLUGu)5iW~AcVxcGnmANTi7I}3xkYD0t zEy8JFaA>K15O+?0NHjGN11l(f5?vnXw@^x-#;7uXgX%dsMQ;HM-`*Ld0??sGDVhI^ zLBqU8zFmR_XVdLHQ7X(QBlN_E@fvCfOjCWV`HoJzgKBk$u*8Kz^`hdCquM1;FSz}j z;+*9mh7X=@(v_pg_F5J*4q8qiD^Sle#|_r)hd2il(jIdy^s04`p0K=GjWnZqbey+n6)o#`E{UND6C zL3}LOiJWe;BL~c=Uf0BY$O9H7BgapD%+Mncxk>9g;(uNpx;9ff3YfvRW@2WWttU)K z&%@Fxejbbv`+X|_ygi*EI`b>3+OMjI_;E zrRcM{93esu2+dH9IP5m{iC+iKy>r^~$sApCwGo-b@Dk)H-fWJk{ zjsB?3wZtQpT#%?xwTj6u$dIJSzs$jh2`{6#ZJ&s$taUQ>u1+5UwfI*JYZ%akF}^M- z>}!=o!Dy)>0=>aTo;X>u8#4QJ9TrsdZ7n-^DHD_(GS!g9+ft=q`n+|XbQ?6T=c!;P|%l+bk{bk*`FvgcXJcbW!h03 zMJyO>uKK*q9Pj*oCm*D7rAzGEwGv0?)z)~oNf}i55AO)QYEAzx`KVRh!8)RGBuj3| zCfqFnZHf0CgdV>Mq?akx6rTnecJ&(g#_7`Gz#R9hVT>7;Ls=(gu`I}?_uQ<(l(%5M9$D|2qL}o?WVm;p$frp9@P^(ep zuK;Ob$^R2UcD5Z#s*Z@=oVb6PP=W6H)$CP3pHghM-F~qC_Uug2F@*e6AUzKac!J_vv#A@!Q#CUgfn41$}ekFGCt}EnF=X_HnOTTC&Xd*!4%;RM);rgg1?RN@+N3iOoi3CX%4g zNoLF3?*A}Q$sD5@%$J#w_Fr<*2;E(;=opbPh|pN^Rc=X3BvewI9MgN6Vwmo?IthTK zN1#PFdB{jtDVfU8<#hATLo}69bVMWlS=OdpTk(d5uuhUvBLlWFZ}V!^~4X_F-wt%ILr_g`XX#-6F*)Cw3)v~O2--K}ZkUqWkI%E0`a1$I1gJiB}(o58}Luzq>Y)h*JaS7FAVGp$x z&j`+Wz!)VpB}>liyH^MlL#?v~xG?(O7~G>kf#;8G*1N9--OEkG-Pgp)p&b)-DR)ny z^i>`S^JPkHt+Fj=&XjEZ>>yv68m(n|tU#M7g7ee~fLbi8HTGTuIKs#>huFY96WVQ* zbz}DBAOVQk+a=Wn$m@kOk0Y;@tW=IdEdoGY2WwR?EjO~hyZ3h82@Fi9U%NX`I5$Jz z1mzrqliPQ0)~F*oFQeC5fcz6jJ=uUQCnAJmg!l6ROT z1-X@q9zcIWl-XI2sSiCD$#hXK&s`@aWVM`2AI*rB>G-FQ1S1z34@_(C&0yS?)p zpj+P6Wgm~YoawCD!(F)O7cjkz(BUQ^PBf86lscnD#`hwJhV|^7`bYl^9og7%-7O>* z97nI3CM|BGN9f4^1C;S&_Z=MirEld>yCg%_VMwXFR+}J1CiX2ozrCilhii2sCnNXd z!}aF;9_^jgw=PEe$og!n9GKl-?FAWfDknfnmC1fnrPsj0+$K5T7NtT& zKPn>$1-Y)Bte9nDU|oj>cD5lFtv0fxo;hv>K~Qk-!)*}Z?m*(L!=?7B(vmj}tOMQ= z!lLATkAl$~qT%$Z@uiM9D zFnLNi=uFM`R_jvV{PFspGmEL6yL+L?w~codQj%kJJ06lY(a{$`W6dM}Poewc`f*a z51r_-H_c9;&se3gUf?0KRn@tDA76q#4h0he(u54wyKloU^ZWl`+jxvHYihW^7FS{T&`R6bsw^S9DI$-}L+~S^lOEhs zl9j}`Nk>^VtGl=1Pr1#(Ct_3IWJ_&JAP!3U`Q^fak@ZFgQfc!fcVxz=-=bT*TJdDq zNI~Q-&*=D_Lij1Jp3_sh62GSy@taS@3KPp9#axI`9tVipI-raTNp7>5ym?baHgQ|(+^rd5+cWza}`(eJ0 z>_-(wQ%?+q&03-xj8i69eFjb<<$P}FzW)Wzf*W>=ImuUL!5@)>99{?%aR6YQ9N;o} zk)D_<1GCAXfK7@`ZhK^c)jO=u8hkhb@2M2IVI1*@a!_U{dOC2C3{agU! zpq~Y)J&86g3vNa{{+X9p$vJdVkL4)CrM#a=Z1`D8aPm?NM!yV2Z2LFUeK#{o0Xg^P zLR;Qzn!DPOi470KldIiG6{AsC$Eym?>UW|<{+EsEGiHOb+gN1(cf7B2*S#`LgTx4p zbei;(z^l8JdPnXGe3L7v5ks=1seW^%z=VWJI$fr#nQ@#`V)zQvzm?~T7xEH!-eR2k z)zR2Ww{2PD=PQUE;-APgFl|*rR%uqmXCUIQatI@`D>HK>1vhb<#`zBV)*vRkpkP`Z z+ACesy_f$av1^_7R@1uPHC6@az3Ap&5Ak@4gXU*;50^mPR{2L_U5QVPJBy0`*c(=r zr7vZ;IZZfsd__1UW4VDk=GW&B-?^7NUv*y65J&)c5KC)7ZdNx3Ed2v9IA4TpE6gi?^=l?|+gpfQ^qg8`LP zL3pKsK2R;GjWZf--9~-^p;_Ez@iZk(h8TQZ=zn9~x7B%4KJcpNz1&0*opLE_81+sZ zJS0CDfE$HTwXnC@UrTg$mtR5u3bUfliP6@mpC%W{XF& zkkavt&OJ73=okenM4B0Pmvh`PF!l*0nRuJA?LmoP5as=75x6J1=LOI0%KX>xnjgRF zQ(0BbF&F_8RjWqP%#}j)q&o#R9~r+=1MDzbZ>G&m2Tz#QQ7uLa*0T3zrmsYa}d-oVNZ-nXvXzT?}Y*|d&9S<jwjzE-;ES+Za)m@?mPwQ~bHnnvFb+ZC*DqRJs+*|~J4(#GxA)91 z{c16_(l20}0G6tfxaiJyjTf!8V$Y97rU`XDFhB!BooS`i1^*<`)!IuVa~dHzJs1XZ z4gX}hiEdqXNSIAX?{lPF^*L_Gny^+?_Fa)fx(5U_{?v;mw2C>iga3JonV;29tdt~U z8E^|nu^QRLV^xmPx!&|QpYjz2-UWN(JgcMDEpTGMI|8#-aiu=XK4svMrb!i~i7vAw zZI6$z+cD0+X{_xH81M*}64OL}!g>D$nRg$8%bWq{zI;6V<{9VOMBAqPzjU7-lLP%{ zyoqD%alMm;f_I`*)qy4M&Qu?A)$$@Q%c$YljnfwZfn8NT9&yWlNjrM88l$+WRr1o-i-AeGrP8h;xg9s zvJZq1bbrso(!zcol9Bj&h5+Z->T^lR=EI6Lq2Qa=&|VJC0wKUig`TtDfyGjD+7kAQ zow2%P7T-Bzh{tdcU-);?8N`-b+t)hjJLX-JR5-~WzSg4{)@^Q}az^ub`uHQ;Wk)@Z zv6zsvIPPzUuTM#V!ZhS!!N9m0Ej&a|7MM%UqT38RM#@$ zeP&If+vC+ubc{$7OMadP&=f3X2h_~KsMphv9#l=zO3<>&{*k_S6|$65X2Hi%n_3bf zcYDYAG1$heul^YZZoe%oU)}FjXy8>j*m~WFJLdLNwHmwwPaNdKM7ut9ggbX$SN(#_ zN;g}$tuMsXhrLb83BY|pKNxeD$Tw9G8sA3N*#(V^zQNB%e8* zu1(1*6OFr0&CiB$4x17OvvCj$X2xCDYmDn-WlBThsGhc6JFXj#KQ34jH2``V&887S zHKo#bPtt(W=(l=j>*x8mhOAm25W~R9_BHtZVb9|#QPGF6E$~(bQZQlQ(h0FG^QOjf z<5&MfI*8g@%9?i^V|U8_m;|Okm4*-)rD_KC+O{+P^oLT0aLmFFXh7rY7jT<{|%BjIXv334USNJjrAB}{7LUJB(y<7~ef&a_)F~kUZhPMvKXita7pCGlt2~Ot$ofMx1B;fMGc#+507ezYeTF{sDF z(?TSBkA`1YA*ahS+JJ5HC1uFe|0^?y?w=x0_!n8-t?u};8#q7s6rYx0hRpJG=0PI? zw2M34D;HV6+_A{RTygL<9({x#Iyw!i;MG+C$^*AQM(Z0_uD&qu4Q0EP4}*^ zm}hLg`Uon2Em;$vqyjQSZjFiXEq719%_mM-<12p9%w!Jl;)W2k_X9NH*7vlKBRe3; zYMXfGD%G0zE|Y&ouo|y5*Krm0df$R*VSFZ3zl2QOSPHl51g|!x(8Z{o2|(nOrQt$6 ze~>R<#~_a9!K)nO$=Zt@5Pmqn^)3(0;=mjZI(_(pP{a=A47+UBF3a!~ZR&gb7Y9x2 zY07>CPm-svZ8h4i69_n~Jp4!ByKq4Q?h0kAI!eek z+e8L}5{*Kva|_=UywE_uvy7hbHYAsXIzOG7~XPZvj@i4prbV zS%tIGpEoH`mpNf9pg;Riua^IHBeX%~x zshoig?|u2e;kEL1EJ>ZcQRnz{ib`BFld}%U-Hf}xtF%mISF?Nh9QB6?FAhHw9{_6n zES7nIGj{KHf6SsMU2;ZquCr}9A2nz~G95c{ZD@zcxOW9G+ zRQZt_SsLeWFcO6hoIQWwB);w-W-9-9P*8^WG^Y*$W?mdUg2`K{bBzi@?1{p=i1Xw+ zY1@U-Hn7k0lkf81Bx|N$F|e_G)5);>dJp*S9%!GQapYmlcAtO zE_q7n;!o7!z%&zgjf)Ge_{12B2t=ODN0aiM*BPW+RfUAkg-rw<=?{|G3?j)48cz1} zj0J6@A#In$>eAMi!PziM7sUG{l)U9yuELaa`AGc#b= zX@$%FPUFRw*rqngLwvD)^O^!b-j>nnVEEv zlFxQ3)KcmUGJP(N3^BVaws#kHxBp&|*F+fNI83t|ow*}{ z^Bj%;H4(G*^>X?|ZfFU8@2`QaA+$gKZywQ1^G5|WuI6lU=u9A#7?G{g{Q+1D9Xu*;^;FW?ZSN78kWdt5Y0IpcKNxZ(>sS#L4re+6X~iZtK2`Ho)+-fj)s$OwVPGj%IcOZ;S)lr zv045{W+d?k-lYwE4i(O+;J;rg{~(L$*<|cH&=(fj^oTxqXQm`e9DDFuUh|j$`m@!@ zz|K%}wuu4*%!_#T%p}6@R!q%X#=%966mjS~J*Lx1czM;}Tf#28G`%4WYN+K4U1+xb zUP)cJap9qHH!n>;Ap=0wY4;DO#G|&bAX0Fl&vN#!GB9Gn7u8R1bZyRJor3lbRg^4o zekh*}K&3N5;?+`v*$wo- z4Kl46P=%DlY&>))Xy+~?gKoOinpo};$v~e|DSkZyMaPnuR+cp6z=< znT^4cHsFuQefS<|2>UgkS#macCr7S~#sXGG_`Rwvl;x-=_bXN zzTsSj1-W!P*X~7!Hb?b=rnDeUXh@1_RO;Cb>K3?+Zf5ScC;xyDJ-r2quew2M(YWpy z&d(lOK+*u4hUL{3tthHHwaLml zfjL;wxMH(x?+DQ&PF)dJH1xr^)bM+xk%pYon`hy)NBCWlF`~w!X%ce_^gH zlIi~~HZ$A5{+gKcy)qrs>;uiubC9Pv$yv8G#R*n^DZ-^yLDCqY6!|0he-XBwWF;;s zcZ{Qgx=IULDS){$?W1RKp7mz$3QT7YAnD(y0`YuvNSplZ<)C_4V-W}7Tmpp?9}otn z6N_(;7Kr*>Pz6H(qkZKwb;Y(fZ3#tCIo7l1+jv|ywW+yp$|nx<-CclAb=E2&)2$8u=ou>Fd8#yvae-1UBA({PR!|qOPc0df*3Xg{_5DMXOA16VJ zcqF9j*I7TvvC?ZT^ra>W&!bOfxE!-g6-z~ms}6*3Wf2_acMeokGG7je&m6d`g!Zg@ zxL@edk1o+6@PK&@7~(PKB3(;V^8Rl<)q@_@u~AlvB$k}85gW_f;QPwcGD@F$EG5Ef zt0E^+7xB7sL_3?=wpbPRP6KvU$&rXf#@y{JehcofUfBMJIrP2hpAl~^i9@DeZ2mhH zL3H}<*gKn!6{4&KZWoT7kgT^THWnO*!9Th>Zk<1MK`T$E@$07$Z<77-;kC@&cB*lu z5}im^x0+AGR^$rMVrJpFhozfVP|EW4wEjOQ9=F@g&ljwbBqdI^+RT%MaxtGU8KmSg zo<%#le423$gnC5zr9L&DuGShr(zjE$i0vqAZAAI3TJ}HjMi}0_X7i44P?IBvNjy=D zf#gU)g3TpP|0m%UeHBG3#{zZ#fK3`&r7KAfbajj@C8z2=rLz>9`8y54Q$nClQorbg z&~`uzOaKT*1so}s2g>qTR+b{r#URc@@UQzGo;OVgeE4y)z9(8WCL@1D$xz*5D|xti zOgs}a-ECuL=enPAi9Y$S@2Cua#!Y-K#2_dML7___%zN+Bc>(3sBkH|wh6ND+f7L`% zp%Rj44_1kcjm*I}!RwCb<{8%y3IZ(O^BiGNE%&pJR~W;?XXcN+Isn>I_V z6R49^ulYwm-<7q60@Yj(UJEnQ;U@~-S%td)5@?rHwzG)k=VRlXA z94UjfZZ+if@-Ef)6_Hckx`PY~Ow)=Br0x~R0C#&PM^6NOP>}1S$^NCmcazX#?3lzY zwk#likOmr2aZxsR*$lEUEGK9mfLhp7<#1w1Gx^{jzz9w5+d5C?)GB`IJy6vmw)dtCG;Yc;tl8rU`>^ zDwF6TToqV5Vj^`_x^SCpI>&%r_N!_MrE=!6PuO#9^*+=K+AsSlS^jTh-NM9Ja)zq|JHims4${l=VF0{&E z2zYZi4`Qb+M_CzaJ1Wn^p!@UaQa=s(<2+A>T#!V9`bhaVB~CO3$S#aEkzFo6A+g3V zEMv!|{GVc>pcf(>7=Ig}+3bG(HsrutjYeM5#4MFXDY<y^#@bN#pp zMsj7x`)}y0_oSUu2!&n7c|}`qXRf?j(1_9vl|?epV@inuYrb6rkl(HUB$2^YV($mz zRUVnfM18N#BHBASi1or-RS!?`QKgi>vrbRt@waBgc3y^#GoVdLkiNcV8U(IM_k`3{ zxuXMvD3QxqE^m@js0RJc1+~U0IfT5aYE|#9AB~Az2|F<+VY$%3>U16}vE*+_5bVqm z;`nxuayTng3oKEb4rfwbf9>F8=N`&1oK2HDy+jLQ_8xPB{d?+Aw&^)0nED~Sah2b@RgF^M8G8fxbuE(YX308=?=L{PvLx2l&w4hf z1vRZiBS)sAOCBSwG`-SZd;D~z_+h_P{E5kBpPs=`>hchY4%9>QqW;uN6_2BxYapin zGIqE-Qi=O}xD&W4bqxJkzZ>;VDdp14qListzse|b_?s|Al&?%4^Uu($mU$AbsnNa^ zveg%?G1RJMu3yI3W+)!*^nnmiv!jxZ#y(|BHN0o6sfMN~Px9c6IiP?`-9V<&m!(Pl zRs>SLj&O@*-0};u+mAk5hgE5mKAH^+oqcCc`g$mUd^e$uOsb1aMp}|eMA2rwO@90R z11kz6YfSF)|6&1E;luwtNRrXtfjVNc>xa22p}iG5j#5padqMNRlI*R=ytPz0@C7g< zb7lY|z4xp3tdT%|8$Ms)Ns$t5GjCEJ)4`bg0}g9{CtR^?q+eu%bwX-m-`3mVV#V;d zfY6R~BDtmm4t*cLh>D_HcT8z+LM5Q(&uRXdyk?$sEkCkem|m#nRGo;{D8&_?tQxQg z+hPg6=_{C8nZxkF0v3vAiVA#7M{?2>_~?GEO(XA)m{c3GFuK|PSVP<9+pT+@WESPg{5iw}QQx<+h z$Pq*Zq%75dJwF6a!i056?t7N4Tx-p`zDsRp<^L}qA91uH?CXVcPCeJYEcL=nVJErW zp~8pn{|O5inMw1T@?;{R4?#RwyE+hgP3NhW32XT}Y5sX19k&3^^dODTaeMvZ5}A$W z{G3(ZWI?d}ly`5erEWK=K|82skO*@_^GHddRqaH~U=P;qhumsXtjvy}a55a0bcMbJ z{zk!AliFTA>cv^&Ov&TMh4<&EBR+rx5d@d#+l1KpoZPm^STr<=m7UX_2>#eaf(_*owoGk_W zXGiE$R5VjAkQQl{3<@zU+V^NxRPRMg6Tea&sGCZ1knsIV$Qi|+w*$mVKSf7l1x1ur z{Cl9|v3O$N3jz{d#5XhuuceAU>D*+^7w)$oKo_YU?U>z}69DG2=D5fw4P0W6o5~Eb zn`+hlE(HLW^=&g0y|h1+ONq%5QE}R|Q|*PJJkY5n8~0?e6~n3xZsQ_#K=z3EMKnbL zs|oN&+rEZ8bX|vS66u}LlCqa0&bPpfPhSmBTDqQ56~(et5wpFFJJbgOFrf2|Xai!J(+#exFLx$_Cm2CgAr)L!ZqxIHlLUFx%p! z(YTk5dtBG_k34Pa>k6Op4T!WWs_4byz7~6~!)>=(!b0>bSH@i+59Pth@)QT;FGm-@XZ9MA7ZMp8oC zFfV+pU_KBL5!s(>_aBY^oSjY9vkmZ270W|tcBfy$-C&BDqowr-W*8$C! zPX^%SzE+To^TExRh2W5Ppw9$cxY1tgSgsMl=lDyLH#pfxyM>GQ$M`cVVSEg-)h8X3 ziGT+)mhy2RYoXKRV;KyD0IJu}h3$?x2i1GboKjwTGF`tg&qbRijCCo59ejr{G5o^Au1q;T0i`)N<{+Xp z+be#mY62>h0<~4#jGb3MM8Wl>(lWzkmtN zZOJ#dpOwY)v-FFY$ExRM();wq`E zk|8H^@8XGj!7n*?iTUgkQ2VSPKWpm;~*Y+k|fPw%UMj{j)`9u$UQQfthH;_!oj#2vm$O=@#^}o9kCoFt`e+G55{I>62mk&#R|=9>2>7a6KGm z*8x`YFymv*Tbw0!2hVEIZ0>G+#4RE)WV?27c=^*8`m3gOl+xl}gvr8)9#-WPtR05td?3;z7#E^!sF;jfP!aZBmW={1~KL%+R5i*z*5qtBL zgdV(4{5Zv#Mc#t`HTHrs-O^w7F>e=~pabeU5$+9c_S&YDS*t+ETz0@;Vyx_4F=DH= zi83;i5%zB|ZPhM0V$IFvVK@92Z2%t-j%Fxv9pM9DNn4k_m(@4Ip`0Farh)mcJ0%`E zSZS9qe1FwD$**JfAF6Obj1QLXJJwQki!;F+iiJzFBC_Qv$mJKlH z4;o*>RamDsXJ2t^$jRueD)i7cPLB*z0|)rqf3gE>(Q#c-Zp=kBv9d~=X(Lc7wlOW( zGT{Yo_js7>a&6kYU#`CW4fdn26Vo)$1;nYp3RJj&5G~n)zB+(|M%vwE{eoy%sYXpF zlWEh_`XtE{QkoO<~Sl|!~slxFeWUrqb5R5k+^{LvfP^m{R-oKyj)YFcflOFB40 z@~vP8R}^gkP9SreyBATR$&<1gf^XeXY#3+csk%nVv4SE*xymsy69A;_ZlA&uv+zoM z#6KH_{bymOq`#ugEC-{HaO=bxJ(Y}s024#xb!81g`R^hKzKlh)wc>bWTx5?@#!aC0 z3l}qARC{rmA)o@nPD{?xCo%pFd>CDk|6+zqwbUseIq2bYj+5T+*^6*ZgtQg*mel;R z9oS!4){~C1Z%#)Zkp2AqGeW=5gc zY%1Gx&M^v%YKmhrJZP9(NxPD28YLaVfI0Yy`fO9TQ{aN|D+EH#MxHZj;|wGyCoa;Q zOK(QagF-_XdHI?tzDb9*VaU-l*{8?iWl~nq?|PKJ^-W zLxQ>(+od1j5Lwb^5C}OQk)6CrMzrfc6Fq9Y#-PSm6o+c=_XOfewnNX`@HSSk@+0MK z8s%1UnrIjBM?pi0GM@cG}gfJbU_B&76e6ymZL07_; zfp6k-3S_U|!10Cf;TN!SA{g$EyAYXck?UCkZLGh{(tG(xRLl|w zMO~o-hmS}lR(>ByKAhL0e=fcuWI@y@qmeei_rtnw{-R>sVd`WL>SOH;0WYV(N7G3G ze-Ng_656M>*5n_ZBiWUF>RHf}$d?4khay2**Z{yeqdTwB#qY9|?|W_aQTMsZ96sdC z5%Mc1Gz0YtFPM`nYDq8T8A2MqpC+FC#Tmd;t$d3rs*_F(Z44FiV&E|AmcCih>CQd( z8b9?1bedv{bDsCbvO{=~X=ecuq2)ktjvjbKl*21?L-??GQuy{7ZHJk5HH&$kN34@E zl`r6bseHW?%@SuW1hupQea&Mrc$lLxb#xiqIQNS2+lnO;_NWndll5SOeWlE(dI-etJ zt%V*EhogpB1kqpBy3bGdAZKZ1BY&HUz1u^qa=Pm<`g8yV5EJ-Jl0lhsSp%Bw&!zIb zq2SiNHXRCDlg43qB7Kk?@xepl#@qEOPXg6cpt4HdBVWzk{=GVuk(MJyxU#0Qy~9=7 zL<=Y=svcMO;Oyijc9mSuSbPBiL=lFaJUZ5uuxO$`Vs77|^5cWhhrHr$y6)-V;#=)A zX1D|^{#V%W)dR39{>4>oqk(~jjOq4h6!2|UV2UTVorntg3J874;T2l&LYWj%Cws_7 zuF_Qro`Og;h%e;Xs$zVVh%C?L!^#0R=|ldOh~nj9#g39vr9;EB-Cb@gWsl+PxOY{R zm^ESYNAK7$JIm_@osg}+T>2a-cP4x~#xZTiJ66?4kfV8P&m- z1mQqPaDtFxtNbNPJuLNV4y6IbKS3}^@+d&btPDj08LbaN?%!B*_m5p&pS+;y z0a%z7_ii*TzWK?i5Mhu``|jHP<1}N$Lyp6ay7D?3KJlRcPj_rk*iRCxUXV$%Ckjk= z8sU;%E@HYU!I9K(x`H@E+Oml};ooNJkU=O#iV z_kR(@DlNm3H{84{Bk4kza6-P9KBaEp#oZ2c5^5JW7b+9gMN^2kKM~dDw{S($o!m)1i83L&7l8>)^yPwku=T4lc)^Wh)rpvw)Z^R%jA$7-PIZ zqK!L=NlJiXs+vD|iG9kEY;r9&l!sv?x>&ZPgH4&Tu{Lie3#e1`qvS%b3jy|iMe2{w zG#-qGP?u^vL*hO6V_1A(E;c7mkWGa68Wi3X#)c@VX)gLgE?6n8f=;I$e5_ z+YT@xp|G!FaX6Zq5^kWbe9k(i9hHIBmbXtjsgBV~gdM{~soe;g*$$w7nkvwYC!@QK zhMyHs^(DjA#@MYGU%&Y1TJr&eArSy!6t=A2(JpQb7A`EA&&(oN`MLPhf)g5y-jlHj zAnoJ{77Bqp3@y|yOOo)kY6a7Z7~$jda@)JQq?Eoj;Ybxu1P#Fy^y97Dve4TkPn@|T zYapLWw=NtfFoaUwOM$vpSXRbb15d@`$5IW>{6E1-pfiL?HNZXOjoJn{Q}s^v)l0?v zU`xDa1rH*AboW)0PrJP8PFJRm*>Zi?A?`5^eT(3C3oZDGo*6o0SfwkBBZ;!qiLpW9 zml@xBdN&QGj6Lahr4?={r%9udev&IVxEAFHaN&WmIVyl}?LJZ@;hu(ppPRlkRU1~e zy{7{w8bio$O1e1I`TnYz_w2zj-9-l~*In+6Lr_c(3p;4lD9SlNyq_n7m4#3arRe0- z_7U+WDgv_{=Xfup)4AvbYLjsSjZ8JXP9Z&j zft3JwjsmJGc1RAS?y-}|C}$VeYtGU`TDzyhnLJ12>;Dos>VdPu+dXWhG|XaY%JuK? z(q;~)nZ^>JjpTe!LOaBmaRH5hbUo#_l|UH)R)pwg1;aqX?xO?KdZxA?5h2zClK&It z@nF7S>8~}|JNM7Kw9w=WxgP$}V719)#fgVW>DcTd7ba)HxcduJcTHrTq_L1C>-32! zajx;navb8;4{O@GGNa#C`=juV}JUJgFC%r5P0Fi zz0JQTNjS?1i5ISI?tw#8zU+8%*%1X2vxe?tZBtsWrK39z!e_|>%l%>m zZ+j8h0xjSPKShYQpM41!3X-536$5njri-d{`LnC(a^Z^87}h+)RNyIen#cLOcaQm?UL}?m5p`EKFO+S0yH;l^31(4j` zad!y@AZPn*fKJSVKXz=i^p!8{;MkrH3?Bp{Q zZXF(PR^i)b=qlQO-(X;(C;s=pvFyI+nCL4qhkrj0JBlWX*HTQeQ1xXb{$ajcO_W&hjPb)N>B~gpQZgzU*$xT&8|s754NvG% zn_di%nIjec-Mg|!i21>hAvvs>?L+TjVS%{0DU8eC)t&_zOIQnENA)IopO^ee%mDQ~ zd!gau*JC^SwX?vcmJKI~nLz^CUy}lpL{hSZZkT;~8M%tEqf?3$_4*d>;m#oYO!2<@ z(8dzS@td_y5uIQro$NuVrejO$Hns;s``lPvJ1H_zKaI|a_ACre3j9I+zn}R_B!c`m zzdPFm3Ps1aC?1Fd6}xb_X~V>b1-xjM*XZV|vpa&o1qSlZmks|VBd3;4OUYx2%oGZ; zE^=gxge?Rp&98kp8Uv6|B}@IuLPRW7D5FI8X)#5pN~TYb=})LI$$jmKrvd?vq9*T& zMS14oF}Ab0vG%&lrE8j4qH>;S&`~V5y9Mrl;e$*iDKtNnn5Imm`LI9_>+lJxnW7ee z;V^-5&h3`kz?Rwgy{9*dQ^YPW4zAUpB` zGZ#-6oU>m_q17`t?nt4u^Dv3!L6REfbvz)hZKKywFSjMN_XW(~IhWOmO$c8}TnYT$ zxtGIPr#gMf2Fi@0p|L*`5>9s9ROzd#BKCiVLGk7L7QLpY%)+HiO!AOZnOtWScq{H(A=D+9yEO&(eV_2ls>>czo%-&6v zq&o*b8}D>+JWKJ8SR+aJFbA%7$V}VnU)iR7!Ag%VpxRz?t5qpl^3Rl=6j(dyf}-Gs z`AKNyGpK58nD-$&T&KjZgUH2neqR1J-RaTSSgm3ut_1#*-XzxP<6>mB*}heeX7ch) z;89QS4JAfwd&SP}tdl6^V`v&M)4CihLAJ0UzKC8-D4Jg$poP410JO6q;hBl4nK4sM zj`g}LEw}||#mAmuTSWa;Y@PgrWRsT{EQCCGD9P>Wt&iCyB*>PXoZT_ku;t^O@?~bx z^(6U7ASeF|Xz<~xw}MYW%^@9!sKeB3ie!>VBsxsExzkpqki5{wqonrlw9H4{-lBp#NV7-Z-6qV5>Lcm6~#NcsOgwETp;^D~p%pN<%{O2wQ;;ZESM-q~-lx z1At(V{Gu#CtyqETtp4}eT>xBCG%v3G)_(Icf9wxVQ3Pw=T{H5MJ{?d5Dc134%lH@| zLR`0M;=T|QoVxk^cd+vP)}T^&Wjl0_!vyyCjX-C%+H)xxaS@5|Ax40dbdP1QVAcg` zec6K`Jy1!L{-}`(zpDtT;tezfDh)YT|0FbhHKO(iPxQ`*vUYkU3?)>lKIRwYqm<2T zBlbZjkC{!RPfYds#DLd5pCFRDM`MIp1g1iepcdv|cJ6RX(4mg6=p~bFROikoZ%s7fK9~Q^>uP(UpN9)*uN4ai9US5V% zuj3>bqXUGn^~I5((?KOgQd$`*oqaGX2G8%NTD|f8!%8+a$)7#Djmh066@9^ll?%D@ zqXD41y|}1Ej7ik2N?%ezr+g_SsDjnK0^$yt6xXbVT|;`>@~+Vky_tV+=CsxNCXHi2 zLe#m1pq_;xnI|WD3SKrVE9Bh#CXGhjxE-H-TG?T&3U6%uDHMVzw>{lYO)*1qUHTjE zt2_P(b#{RI_JN}ZiZfqJ+5%WYu!rsVvt&D&oig&qS}LKnVnHR4a%NJUxQJt|Zq{(=G&ZS_w~oJMRYTo^(b zYcCmP1j<9brCkkU7yW(uHKl(S>4u_@?ykP?lr%|jidZ11LNcJwCJb{dzepwn{grC_ z%)=KS$laD$t^tfWn+)PRxJu9rR#-?@MhmUu9Y#n-?D~9-boQFN!!sIHTz?%ri`7NPjhV86a}z5*cjR?h$mJOtG)>D4^8mI zrFGp`bWtf)yXeQwEBB`;cu-U2YH;m689j5tFCS(I)QuOHDSXu{bX9581Ix+5=@6(P z7Fy%)Xh3ft`;YgLA7Xm0j}G}yoc}Dy!lsgJ_dJBR4)Q@2H>%feb)oJUn~G__S1^da z8ebd*S^YgN>IJsD@td)m{>sg>4hk|$W(V30tS;7LcLhzOTZM&7Y?4Y)i7AAFRa46S z1l&YhJ@3ndp_iL&k10N%f)(~Tl!z+z0q8NGA&aFFKU065lc!=aXa}If+VP>Z~p&hGkt_~je5W4`Pv~SeF9;oAUfuTrs7I4tI8m6mjh=o z3WEkylkG{_-AA#T{!}tcBjR|?$M^-VzN3~Y*;BL%?J)bUk>oIbS|;@T{fGYQ&R~zF z3_bOL?RGLjJtNGUm~l(Jz2qX@qc4F{1e?5R-n_NIREVR|t^iU?=v-DWw?BlOVa>nP zM{{)Gnw6`}c~lNZc3v^Q*)Y5Z#IOTNRd2=CcR$a$Ur$9#Z5D-3Z<`LxrMGc+0>;25(!uy&DmrwJ4;X5@0C!#9RC+t|K&teD%N^v;xQntXLGM6Td~WIexx^gtPg)%LXNESK zI$$q z%}1_cR0TJLEM_qU>9UdjE4LVH=kV%A`+Eky-mh=BtL*+AKi_Xv7u(dm_Vrbd;nVH* z^_6|SQBSL^K=Y8)^AUA31$E+yYKqW-GJzcMlCFiCq2o5iY(MDm zL?S~=uQT@4U`%u#S$?sb8h!n?OyOkV_sj+*S=Uf311CCdrKc7%d&J#pLcz9}39Of$ z)qg|Mwn243`SvA~P|ra#cYaGRvi7dYGOb#oKS^?;TbwvkTt-0SL|pxFSA0t*`rY!d zLd^_iWRpHV)Y zV1VeGJw2R+qgTJ?kt@|6T{jGeEO~B_n4&%`e{q)nh4pfdF|onS01vUVKNFtd$gt*Nf(nqFR85@%?V>n>nm5rMsd zQ_yYKp1z|GhoazL{UJM67!<&P=M#c+4=G~V82;$JTb=b!nvmbe1IPXP_s!4@2X&FJr*lwGZ?c36-)nWYVAT z2oV+%8k>u{));pT-?I~-Y|7kv%+58 zPp&D85`XrY(NTRHFCIE@3;vNtJuh^!3;sYV@e!p1j6}njVPOM39#%T=VCL5kr2TG* zad9^%HI`C_RMgkeyFl!USXLA1M>TZ$mb8lN<8q#!Gk>;)= z3atlt3Hsb(9;v8OT1G})H=;r+V#$ue*f2)RZeNb!ES3fUI9oR>(S+Sp?%oD#R?${n zoy(*zFr+y{T*{-WJlg*^KHX9UCc_S>lLY6l2RzZ9LD&_p))iLqu#|JVEzQCd#E2YU zJ|97s$5UrlV(zI1u*r?28unARJyv&j9I~vR4_@Mgdln>trd4oTt_DPGyN5M4ev%7C z_{u_ZIs>2T9bh?CEqaYFKa4^AeH;@57)hr(NJ;fH-F_f^xtx%wO*@Jg#~D|dlHPK- z8yHUh4xbAh)0qLjJ~FVdKTFrlNEe=5sEoSAP76zwBBrJesad;wuC~GVyGX+3YC^}K z%CV+~1+DxkW|Q@gFxQ~VztSgCJtk{~?0{A(#09bJy-hci@QI~6O?+Yz5P1JUa@SIY zPKheqqx891cXT;c%H_3Ccj9Tj4@>d*-$Crp{*>^AdNb(llqVd90WyOyq)UYs2I<5* zn@%1mZ(Z6L%jC@!)2}8l_Qp|y#+3A6b1+YGc-ym`?R0HPsWD5VbD=Vw)t2#onL^Em zUlHgXg1PZQUoD;Y8z;lnh{HPoHuA)be4#}_jysO_;l1tQKFi-$#9~G1DK(%lSbcbv z%uM0(ZFv4tsZkNbC@{^=pZba7NAYnZ9xNFW3!dWEfgN}~r7XtV`T{bJCUeTN+mQ;} znhCaHAom{X!r(NYNp^7z_gMfdb1@#6ERi{Lq~1tI8|84umO*~0<26NUHR`65-1KD(X$9h`yjlXkNcjJQAoEj$?rth&;=1&$ZZ zc+{7bG7dqm&pAps90UzB-=7dGoH~WX9=OB_LtBW>g^Zmim4Oi_jQ?zy*I3W1rz&!2 zp4dI4x>E^3|6phs&MDGSGn93vLlyP;Htsu)2xOLRtU{PDjevcj^fQn&^Zf zvxFnY*XB+YUVfcJ4VS#Kxhf!f3=sPc52VbGt<4T3AlN;zwGx4)6tnH z7wg@8R&kIbxDLVh2F8IUrW3O+ctpqEb6?-X46rp^RCZlDk`RsweXKv*Daj}osi?oI z(=x5Rkzn3mo6oeSm(!JGTTWzU>zFbYLx(o-U_i4FdG&GSmu5in8vwIdI-qVpb*RG;jGfN3A{Dg(UM3!;{ME{#IfH! zyGK$!dWRT`-`jU|vir_HBYjOm)~=UIH*OfV?O<@Ic#g0LV&0 zt%DK#3yl=Vd#3EUfK-TA5=Kp|8yZB_7jlB3X=qY3tZExHgUle?@p7qIslXH}-NP)`l zZ5kn#Q_z)PkUDyn!4LYilBxvD(Y)yK-MjM+@x+5xlPATQ99ooe`MOuDDTmmdbo?)$ z%Wiz?fHh??>y^w5#K-(=7dpx<$t_NjloStPVyLTg0KDi4Mqe{Sc=(yt!gwefXS5`g zly;13LE{lLSn+adO;P-gAX$3?KSz!ku25f_c0}UlUhfVl!iU7 zc7PFAsyVh({XMqzo{D{Cf=%=OuCn7rEcXkLpaiOk)0P^uE8$9OIB}988MxaC=*%?r zg5iz)^Hm&sLMsf&+3~uUUf{>V zea_U(sd-TvIiIDJf#LL2Gr^Kq_t~IIssl8l=^4gn^rt^65wY)e29PMc4$B=QtvezD zIk&EW&V9{L`A$uHkATE_tDa=oSmyeF6j}8R+_mG>)Ss4Ua$d@#`R3ehvtdmJ7zX+T%CJCrPCZqk&k!U zv8?;l7E)!u6p7tNJ^o%JwwW>=@`ko9+;Os_D>!(|I?*Q&? z#_MA48O*avws|Io@WiI%Y@%lSgGNIrW$`Qncw3}Qy9Mvwx$kZQw}!gVjUz+h_slqp zFeqcn1|0W?*b(c|s1ojZ-2J^1hHs8dZ`)2^)k&PoF=dgkabW}uGtjdd`4q{}dH%68 zsaT3EF)O#`wD@`jWj$*qsdA(AMMY<&U%UWXGpuEPt! zA(8E+%inYDE=iXQNNe7mxi07FwQvQiY1La%F$cAHun-W~3AZsTf6K-Pz@fVC$7c9Z z!I|tT%%lEBeg%Z(KYL`4Fkp07Q5k+F?rALX#{>gs@$h5_xdSW*Ue%5aLl56?ie>(6 zZ)WZgFPrUIi_20EHnhQWVZ`#rURJT|Ij=%l*PfDV$uADgrT0AInv!u&Q!z!@o zr7Rt1RsreEmL1vfYkAD{eY;fgjng3j|4U08o#crEplg1cJsF}gd{oT_6lpIyEXOcb z){>TTTkZf;>2EH{Z5+|ZeEF7l3APz?r+$klkMvM1i$LpPg_djGL-f%7E}PQ{bd3E^ zWgJudmy5*YANo+N+2UgG6&;t4sx1Xt?}R3s>u-6z^ir!?qq+!qDCO)P6FX1}edHEn z(#sg7(0GVQ#=YU1*c2U>GH>&E2=VPhiHseD|8`vmfx4`>KwntBXhH`eTBW7+Y-#Ug zBdVd6?+>X-Z@-kL42j1x%j*3Gp7fxJ>(q2M0p#}dnh`!v^-?PR$Gv84Ge`X)kP1pF zeX`cu4JRBzE#c=tq;Fm_NS(OFQ6b~ zDEq20b<~2{##W$FgBl4NRs%$QDYMw|b`Bj}K)Gyk0LCqRl)vC8Y*mTlSXd2+XJh^7 zE*uZVvcShy;btde2G@uv&+eU6L$o=xuQ=KbeKLF$fWtP+M=OpDlw~6DvFhJ_Rp(tW zmiLX=j?+bFn7|;i!jR1MO|zUne=5y!siA5>(wX6t9%MR3cYbWrHt!?$ePG^0DWDWtBf*c{N@F9`y_^ZZ!35a#5eBY1LaP`#+5LFM)jKBbsoV zwqNsEUJ)5*kCBx|uKCVJep^7sC!689e99ia_B}+L(nbBNAVwWLqcW}h-$=(_lihq$ii+e_tht+(vc9BQ+Bkaf#2O4zS+nEW zcVNgh>@{_NXZ!f}`MJ?(_b6-DCuNh`qMZfPF?+hP_ahd_nv#Upz;l(Y+W!@|`J}za zFVEd;ADQMaeOS6cXj=8oxXc$gP6ClS#|VP~7&89T!*etc!A1Uv#cg#4*c&>k=FNf+ zB82e>U*sDAaRu*!ag|V7F@Pah36B%SgFK~E{Vebgmawq4^7K%z@fe*ZIJYWUC#Knh z{h>x<>J712XAoy6*nc9GJ~P$O8&!99Qd&V*TP*4rqZ7Vp7UmK#O;kP0)_e2B&zBPgwI9C^xA8<2;Kece@nzh29~*926@9BaV^d_Sd7e5_Skm`2oM7F(28Z(7P)_; z4xs}kT6xOvJ2#R5q9@x7tvw9m>-Lh9#WD6x2kwUK^)`f_KFHHxWM&zagwA*8XYUR8 z3E;M?SM&E|?Kb!R`aW6Axp83N$v1$Sc-FZY*cRA*9qeZWei?EMGJ3=Xf8I<0hp+FT zW%wsE@MmBXyGqIzzGd}isLZl$KNxt~(2si7Kwy0r3u@-Exs{>g@$ywo|4*&9=ySQd zl}KB2!-93XnvU(ni5qn8%?gcQbGdi9DN0Y}_f!CIkv?KQxL*u)%#AifcwxZu8hg)s zbeoWDbSEm%N5E&M5t!Q#A7|tYlGs+Bw4#|gi5ttpC%BMTQnXbk^(eC~LKIQy>5)p% z2tA97he9&dcw%AI9sx5tQZlptB^WX6ImwMvoAC;@kc5Cl0%xtg3VCPn8anl&^C{^= zoaVvxL{b7(fMtm`{pZ>Ab8DM-AlX{b4yvS2Ftb5aYHch-p%T;w$US7aPh1;#4ed5t zMasOti-#(;xD;)FGNDcXM6%VR_=Ia16(*gQ3bQm`bl8v)YB=sCANf1%9P$Lh2ZCQr zt?zrk66fG5YwpHGQ@P_eP1DiDjfKl`WwR{Ixfqg+nu^&;a@X~i@ab!0YdsM(y%9vq zDn66MU^TaRqwc)Q&=n=C!<_}xwo#md8YT=Sd^Jr10DYlGD%Z5Sk#}~>O7J%&o?~C| z$l<07iw8=8jQKOD6;*Q=g<|a#nKb6S1wQ^Pxa}D|clU1eSUu>_n2^EGHh)7^eqTFq zcZGf97WV8R`fpWG?!D=~MAhY{a@_ftXBv@cEKPx_Xh8JxdmEFSk!uu(Q`lO~rE1o`+ z{!@O0*0##kIoUqb;L{g5c+Q;qjPEXEj$btKkkB8+_6Y+VNB|Wb>}@h8i$hUKPZ(v997wj&s>Q0JPwk}^H{`* zo(cbdaV8Fx1H7r&nao5L^y@O2f@&C zTn0R7g&&wy5}!yuW_rMXw)Mo1U`e)3K#ruQLXa8-6LnDhpJ(;xHr32Fm2_U-O^=Fc zL|9q*l|tzq4K9sG-dZNtt(udk=5AhvYkC5}P`n&ZAb>>YA$fCV0e3~HrZW%J{MJXX z38aAt4Xp+-wEtR7rW#dQKVN0?x?Pv`(b}+(P1pd>fD<@SDK!C9)WB}xoj74zh(9h; zNM?qxS-nf-UHz0DXY1a`+P(x7+ClBfC!Xf-lrm>$J7uXg7|?Yy?&pu`$hf$RErkJ> z=^J22$Yj>oP>5Eqwk|xcXpXi|UXN@10dA{Wr5VxbKREY<&sdM##ap&g5va*`Pg6rx zTA9?$7-yeTAV#Ca5Y~WP2NRng(P;`zh$+!d&5ydRYhVY4i2YYfx~qC1pJbgr|64}< zAA*W*w;JJ|^=N8er#j*f4uh8j`0=(XjqxwZOwq`@Di-}qczNl@cg}CvXX;zz$K`~0 zsq)H`JZTuO!KBv26Vc&`s?nD|KXbM47Sr@o-Xb;a$XYL21X?K&&&PVc>R_+`J*8h# z3ZK5G800ewJI}_xLpY?_8$->73Q3(jc6wN5c6f8Cc0LF+<=~}Rn~_RF_9LD}_@)qJ z^jD%v(JGFtxFjblZL9!a`E2pvjS=!=j+DXq=p>f6>4}R+WMVUv`ApSlwSBitXM+g3 z2{UG7>ga1v7J{$4$O4?k^4iQ&31pJmBkx=V2TH~XiH{-^vr<68D$+ar5PU;T+w*qx zBqn<7BYNJrQ8Vc;tb1p(PO2^t{p@!8RGBBM&S%A zv@tb1ktCI7$9rV=Ku?`W_GUtx;#CB7_`Y3_2>yqSGw=8eP$9uF`;^d3v7%xR%*et_ zw!L8%`Kh_umsCb{P*C9@+x7Mw;eW%>l=(Z+kTysne(sYDWKF%o)s=3Lg<+ zdmol%H~fX0#}&u7G=E2&RX1G50E9V|r`hh;4%mfTWjI}+He9FO%X@MU)<8msWxmgh zpl2kV{E`SGW9*a(SeGRl!&51|!~@=6NwADM4h`vRLVH<~PZik&x0q*;4zrTpKAf`v z8OH{9wG4@9q&35f817J(klko)J1B@8p%My(#&n2Z%>^niC14(bZFU5~ktu@V?*sAs zeJnRkm!m()M>~QjB+++^)-M);$)12T-p;)iD|EdZY_s9fAegI_t`BD5^V_-H`Gt~y zMuLTTktL)SdkNM&GcWiobe^E|Hr}qSrZ`>aGlCK5Ix-9oM>tj@S^SVU@XOlX^LrMM z1zkxy9ZI4`FQC3XpGhKXy8}&iS)R)~mB-Zc6@NdBZ3bo1EoRQ1UTpf9`}?oS%kbg% zXf%nt??)qsXFB2@I#3a8>9)1J-qW(Y?=|cqJ5easTVHI4bf;N*#zr&pMO*rwb4)DN zuK0nLxb4~RF71nx8>gvYk50hy3^{+ro~|M7rvebTOX!*NgZbF>ykm;v0Wx|(%qDD6 z=qZ%1*MBck$pV67({kj;$ZHcT{PM9BsngjFJvlFYa+5>5%3N+>V}&J99T+=@OSZ2T zOSHN8+DfTH{Pt!ZATGB9XEN@$Am_XGCHRw3jE2W*OL)_$JXuJ->3VB6oWnXE5 zh{JluBly=O)=n^82y?!nI~kKWumlI_x;KN|&&41u;m+@mHHJ<(WCd1$I7N48 zk(lOm(21ChbQbdkpRDe6g)gleaV;(@7=C+zTwzm20#sH1cBIsn4xZc`!@Y4Ivv*sk z0qo`7Y=^`1_F#xJwGcmsOFT!sPY*u(wC0KT6FAS+M1)d{18x;o(bl^P4=Xg|g8&fU zQ6OcIvYSx8W^_&pB@6Tpp%G;h2FYO#lJVk!HZC0D61PyjTH>~DwOrhPFC~;35PRK% zcQ87Q>$HxPT(JV1{2R5GK3an67#;qu%wMT;o3f1|?@HmNmz7rO>mE^MX%YWk%%kIM zR14GrK|2yCk@@Dkyzs_UMV7HCpn8#_^FnMJNz=BVbBW}uj2sAB05*e4N==K#w5HIq ze~Q+U%w%vM@%zY5$+EHI3l&;>s=w;Ya=|H_c0_|N@@4I_H3-=++MzOsGfr*qnqgIhhca*$F#NdX`Bs3bWio@Z3Ku#BM(HY;H%zKck|Q9KoFU_9 zi-K7%PY-n2$8aE$%|S}^y~=87(o_5x(pD5KjuObs*pjfV`_@%ESe-c{ai-HG6&~~G zzW`o-e=ezs#;+!y4J|U5S_N$lWh#G0RU3v|81^+5Dj#=ENDxAuD3R#IOW@!Q892S& z?Q_Lk1O>3T6+&uO!FCJ{F9p!M7>?_6!cQCYPkp$O@_%KWAyENo147Is=Q^4+_zN7I zDNX+sdH)VK6J1X7=^yJT;|;B{e(@7ou|3cin!vuX3XX#Dny6U}EmawMDRFlHVU;Ea zc~Ue47oFt>2CR9tXrHgjD!?&;@G|OL(Lbppu9*UHzyyoom83IS!hh51Pe;rmVMCd) zY)UwSjJ8}~?4n(Z`}AA_yLz&8cGy6KNcVHHoO*Da+62-gH7mc_Bxz$XI(#nHm_Olx z4pD6QWnegGnD6+J`5G!qM!Ua%v&RyEzd2@ku(e5a@;s(Lrr3Ceg7vKtbNc(fYc#Qt z>_#JMm#~N7R1L;4po2e;-o;KjC7ZpN^5JpA4BT%Js%7jOkk*j~_7;=%b0a60DaDI`+_5B5 zbxe6K7O`>7to$XxIP`*nt;lgm{YCWE=kU1yLgD@wAMm+z_+0;CaDNMj_+8lk76!K5?$T16xxa6T%J|6k06*HL>?+?-iY#Mz7s91XM%RYst#2o-m_Y;n*-)1 z1Uzu`Sy`x!Df0low<~=>TEd10Yd#{j8d$%{bx1ir!R*`vCu=$d?%hyZ80G`&&MnIl zlx$N)X_xheq+;6qizt^(Q+U^4_|vKi(C9X6oJo3}^+zaKY&*JBqjoyo_?oQ&pF5t{ z8b0y~ERHHfrUyAnk3lO0<^JX^12i`uBTJI?5<^i1Nqt$h%vN*Nqlro@p8xc~^ z(exB)t2e0LAC=S$B*T;$lrcy4T`p;elBkY~leY!lfetF${)j<~O1~G_w9A*54he4* zJl!Y5*+s|vcK;M*{N_s49;{o~EK^bl)3rSJ1?BE%xT6r5H=M7(a`<4`YC(oZZ=f6kZlVj9p1c}^>)~RsGONW#arc3S1^9^Wv(%Dfme?#v zAbse4QX+M&5XW@VrthlT(lz))CM*)DFvGuSDqC5UrHPUXR;DevCbTokVpw&Hr3Kpe zs~<%|W1rD|MZGu&W?_y<9ZoSYh~x?<7ln?ANcqSw)5ryH#%@mx-%d%b!hJPeS(b~K zKbts2$AP&=@5~;@)?r>U*g}>~AVZmZQv;>W;o~iw%es<1B4Wvh&6o2}Xxq<%(>;Vg zUb1d&j6=sd`7W}yT(KcfdEd0DS1Vp zopB7ODgyrving*wi)2Zwo!u^NZC!Av&yVJ>EaZRH78`5EC1HoeF;TfTpeh*wF(>@_ z%|+=0detd7W)M(L(t(V)<|YQxN0fmh9*$dZR8MXL z4xj$LQsT07&|`r*r#PY#{&?_3il#?kiZqPF@i&@fOlatOUsoQ~hKm+&A|qG|E1e+@ zi5#T-A)CGXJHk!WhEFUh0ekc#n57whK-yK8)%8Ee^c%-1bK-wowMH4v(@yA)T2c&c z`up(;QvP}y;>}%Ir@NMs>&kSV!JBaC>UyY)iKagz? z)5z8OZ&%Px(6N-bU?Mz45!~s@f$}Td*}pKRRbO6x2s);t?xRfV$=g%`6)Ipn&Dt-< z7eV5sh)7^)B$sq2jnS0LwHK329~)S8)GZoZP**xm0v76#SW=#eKz&MgJ~9z4$#xcX zXEa4q$5+d?!s5^1yQ`-UxlK(EE$edVL)$r-LNr%&6zd01Pys(68F-v59LfC;jcQevn!h$2Co%|N&tD{1T317j z?jwIwly5aNtEAZ*QXP5#3}49&aMz7C*a~UY7+_8Zy%}A!mA$BPT~)&}>GiEkG*jLP zRYR{SdY3c;hZ&v}yQtF+^i;0CU1UG%dPt^;gkG%%rjoeU@T_Di0iszF&f93-8@hDh zHUCO(6AphIr5EGqrp$q^2yqMD@oI^GPAoXLDG}NSq;Vmu&Ac4ZvHW?cy}YsUIB<;% zG7{z{qp3PiZP2}Vj~+Br1F4>biMCiyS8Nrq%hbXvZS7whQ%^%gyQtvaP2*)S@qN;l z$$*;3dGr$ZZB3_BtErF86=`+o zY~eqc&mw2J$-L#sL;R$7%h_;*e8$BUkPnuJnw(aIfC&GVsjNY*FusLwB2ychdZCMm zW2XWM>AbrW%(Ru7AiFyy%3Dr0nDbx1jT+-cCI<-|OQl2nzk`E`g?_AAsPsA|cV1mP zIGtMH+qr)q`5GhLhd5%K)5tA{&pI}cU$Yf;+iXm%?22QnE-^hWYU>C-#03~Q)74I( z<_vDC8f472&UODj0|9bkrhwsq=OMu5+PSqv^`}~lFP?x~6Z-f3R++&X_^_wti0f`v zK6hsBrhi$*t^MIj!i$ZFC)v9uHL+;m=3LHO?wmjPr2$);e`rIMmth zXeho5$sxe!ZDN{Cfl-1(K@Dn{_#%uAFnRM;KH%&RovyCqVbnG>V(0W* z`q`Ao|6~ zt>au6FDl>{bf)YI_kt>hSAq(r$wDtsBQUy?>eSMeI!&`bWLqJcOr*d}D1M@^l=)Ys z8;|RqGAB|lew7{>F{heMdFTrYbz={z$X4TyaQckz*DaO?DasBj5@l9VQvYcb){XNi za_|nZA+<|B{-cWia7tgkPBL@jq?D#)IXmi45)GZ=i&l#_&O=d;%b0^q_S$Y1UqDu8 z174=!2h&32E&c91;zhN=fkp7tUr*bCvTVs?z{2HD=Qiqe(kG&E$*?j3eDF9XwS%MR zU7Fo=EOK~#KTorP#)gV0t#_yVLxQ(;vA}F>dH)P8u)ouB!eS#mN&gdccHe#1e)x?= z@OKycUkB4omypBErxU)AL*}Rb-IitGmj0WHJu~okXo`18>4Bm7H7|-a3|N$f@?7G5 zpgfmkYpZjgXBmFHs0K}0*U(TeII8%(#x@;F3(AE&{TNshD8yx3hY^QP9?{7x-{hHJ zcamFAGNC9bU?K;(R(B>*GZED8L7%QB8*YA=wA^& zm(hE8Pc!z6NU@>z?zMZv#}@n4iBFWhSzI=<^t`;j__EVt2PPcC*J&+P5*uz!Qk~nP z?3c{?c4FmrE%in*6g!v-b=n=HU0}Y0lVRH6F#$3H&U0Drt>0IIbZ?{Kl!U)#~O&oQy@lf{zpPzh{e1*^uJ% zIlo-`2vDtb(aq^n2xRQvE2(5k8^&lLW>oVTlHxV4tu+j=JTb#mfN|qoegr*1_fNrBe}281b{H z6h9VYDySct99b?FS#J_XH=VnSq@qGravZqwV~YBGp-RkRxs!YQ@al0cyThvFlk*J~Sclvyi`#eOj zX|pCon#J|A{kf_RLy~~ji3KuE$AUL1<&5k=T`q_{6@%7(t9+e;+W>SjBzr=L&K@Q` zg(Y~yC-#v5+)86_>?19US4N4*oGQ8~)8{hCF1gCOYee>@ccMCuRN@2jH=8-cn=nr| z*gw%Ax1Vp2@r}zx;wMNUat&5Wj+_g6PuP05V~_C03Q}JlN$jY|4dDRyZz3&)g`mdDjIl!F7IleEg6}$=iYjs~5#1$FXLQruko#E7T!ri};s( zh>5syQ8bUI(9C~YC*LXP(PM3#3P&aiOf=JYo%};PHBK-FBNFgU=e936D$pzwvq>G6 z$U-vJw9LpXg)QGbW<|{PTDFC_L2iD~fmwO2nTUag8<{Wog!o_B8TR{|M_XhykY&Av zy#Fo@-@$K?tr3TMRI$@ZpM-KfrrzO>pqHOaAM1|tsG5@W4So$e5bKHQlrsfnxA}HJ z^WIf>eSqu?l6H&ixNSHGjoIMb`GET*6y@Wl=v>XoA+??CJ#_?XxZ9!Y@kejE5^pu;yWf^st&T`Eg+o8v6z{ z9f&hK;K=4cu;jOrd!e7<*pG4_mH%qwodf$G5cn|yhB+h4{+m?jd|`+no@9z}&8KBJ zMPbG5fSu5_UQ-NaL7MNUZD=td0Btl0PZ~6W-um2aZg^*e4uWGjE6#;vA{X!hPiU0v*dHp<5IdTWDV9B%2-#RhQUsrl=OKcXaYk8l~HjQN{;}5(n)>pEB*Q zp*j;z^TQ+M$#nbBDe7O<9_q?(f=hfmXySK*n56cLJBO3>ZC#hzDF;+^(uqSwv9wMN zzihj^75#qpcrw`{F#A~KC=$lB+#`e-?|315$+sxVAI^Bb`dPw_(Lh}8?(!c-3cl^( zFMb)P`n4(hk-Y%0bvPbAp^MR*5sNpZ2{=-vR*>a=!ZnNy(@kqwr{ITs)s4p!zMT6Z zCTsJL)A@AQmBB8>3VW4WhA1fB>};?~;H#T6cIS&(?1daahG(@RR4QXjfg`(EQQv4rgJgD+11HcLJjkV(mOAaD?j;)iuQ>+xz*!=1n$mtQ7=i)l0zUu!>u&~uXFfSS zZWkz0?kzCERp&F$mePy+KePQ0jmpV#Jsi8^mm+%<4WC&lwaQ?)fYAON-W|V zF)Ju!R_pig;`6Z^7TH&hu5dcKEn^hkIgobNiVTH)26634xv!?7!_Lx_E)}r?cZ@eF z!hkvptOrgkcCS0Fm~JzNnvXNzpX%=dO6Bat1s87)@nzc z4n}{Kq+u|3Oj%c~dN`GiQiWwo2Fz97S~Sehsdk6lRjEnB723w{Seb4z7CrG)Ytt%g zI}XJiO%J$QCkO|N<+*Wp0h`Q@nW8^;k?ApGE%8b@Et~|jT(lm0WgD~l4cC)x*w6g( zyX9BR{Vx}9E?no{@{=JFviq{u4aVq9!^EL ziKB9jCLz+ccP&##O25)IIoqIOC%riFyUMmBwn7{)0qgBq+b?9^&9@in2YvQxUXo)h z2!br6YilNVlG_PapV_dwI0Tc?3{oD|TNoo>GCYte8Ykam;Sngzx;S<{;c1upJ2JO9 zJ(by*t>QVt(%5;x8=J%<#oMKA;b*sq;G_kY0nD|`hq?QX1E;LTM$7iDFuir8UYD6( z9aY^4dR(IRo<470S{1aiCQolUm(%DzFN^G%bG|BPEXVKC!uQVrCH}B>H}&G4)=O^} zg(%1SLdm zyKq+NkXi`(i8yWIf})8d+0*Um1{wB6fxF}flr=#mbnKmqa=QD?bCv~=p%`a!;GH2|o)Gx>Kc^zovt3c2-jOf!!5 zcidWiSW~4x8#ZRlJOB{8GXMYpZ>vm9i~t)23jhGnE!};bZJk+(|MPeLKT*lnnbjHq z0ASi!o4W!4pn(56I26=>W&lWLPWG-K|4oqr0060(xrHSF{J%8_01WV-&VL;Azk6T+ z5WD}-oBb&Lr~p|1Gxa}o|7-tW4GskY^1t{|1;GE84+0z<0P>>`Kob_0mRA0M@na64 z0Dy?OT9~+7m=l}&5Gy%bILazZND+HlxVqUmITEunvN1CMBm@2<7sU1y0P>Tz7x9Rq zjP5ty2yuL0dRRceNNw;k5v8!|C~HpWzP?Z5;FV3LiNB~a8qrQ;x5sq%-K7*%wbI8r z+&d8ajD-0ky%lppNmZPT$-N~lrC9`}kmNLTXhNFOdR-4v96kvm0nL}0>DE|0eP40I z;-d-*5A_;a(bGa4$yvd|AToP|#ieT^>sHu8BqPq}8^MnYuX}XR_N@a}uq@zfrgMi! z2N@Y}H-2dM9^$-pevnA-VJsL#6YQ%~1g3oS7Lv-C(;PdYCZ!>C;5I9uus4F?RNpL= zm)&A|mGFT=siavJc>~@(D)in>KBWIfPi>#{RRqwjZ!405qC*SXiwpsvC|aZV{&kVA zOmOQ0FH};7ZF4Rgxz@(XJiyVN4Kn>^vnoxNj2enm@BC2W{t+Zk3f-d6By>own6V?E zVTASsJ5xQs?;>W*)8G_F;HIL``qX$+APuj!^N8R=!PIvP3p9xZiym~^EN~>azKw;E zLCoY?@V)9qD`(bvY*R4ZC7H7FICa`^5f+O@d)4f`l_nh@FfjsZ-*4F67734CUq;89&4S;fJH)v53JhG`@m0`XD%y{H{+~CNzZ)nn~{n?8ML{YTrqyiKA z%-m3^&RANR?oB~~GuYs-emcKd0eR(R%mGNZf1mkMXU-ZN(<{B;iO!HiKq`sUQdXpe zS2PQ!GkqudB4Zc;v+&no(r9hEqu}_X^MZiN54$X7Jf6KmhB@c=-_u?t^1x z83MeGasuvq8Xs5ebOh1d;P1i+C87vx_eZ*^u~tK&BkQY(AISvvQ~HnVg21aJpYVRy zomFf+O;l%#;Sy4t6~j>|t^I~xS`~t%9C!SIY)9=CS!l1Y3u@926Tq(xoSSuh3YU~} zg%V%g((VWTxhlKVFpi_Bq8%S9Kg)^ZAM?3i%uD0bc4L%0kT}@^9M9o;-C7z#lMH65 z7aHQ|QS;mpps%eJe$I;dON`lsGW7G1y2~V0k9!m;c>HbnzW7^$j;@5j4*=Dr=D)@CLjfu7Xh5R#-r zU8InVe*FjIyuW5>1O6orlUCS#+(P_cuB%tQNmh3S%2Ert4Sq#OywcJw!G^YTmU0-7 ze)0`su#nmE_TCT606sJBJ(YHgz}e#`Xl}5%Fv0|>y~p&4zjSGbM4Tb^+}g=|dN)8xPE);ei=jvW}$2(W+1 zG3uWR!_dF)d+nKDjc&v^N87OC;;?$-LcKv4r4&kWevB9SP%RG2ES~mu{c;9XKnz6a z+xS_<=7c)U>0*ybM5&iS)GtAEQ;cthE})ZSoF>OE!V|U~sXCd0Vp7i1PCZ?W4BjY& znU!IY=#Iof+z2+%DYzN{HSLxNYaQ+ug;uQthJsQ3m1LzwW@G>OW}WeBT%(?-oDP!& zc1w?*YQ*RwfUhHeIQ4>mTdC0R+1)#@_Svcs>?E@6zCb07Rb0Hy?RFRE9{nB;JiGpa zuLIMpe@LE?-~5p9XCi(Lc~fQQx?&(0%1r^P0HbYt5}>g*qO^VZ39KQjNZ&+_Z9LDp zJ~j>i>9V)CbAXCb2mBA(jkp=7*)Awt`=8r$9XeA?ZP3UoaT?Av_ZtXXyCj zky`eend&dfV+^12k)e3Ep1|3=)`)>!vN;jqz|$@wvA+YeB~J91iRcQt!sL#VY6GK| zt_*gpw@~;l@V*oQ7$N0*2t=u=vthTi^oCvK*jwO`>wjp=dz4bj>Sz|~nmj>8m1lXi%3=i2 zX1)<11GOAANHg86J457Dw9;rrBHe?>$1{#t{4GWQq@29qO+b+4Jz_FexO88lUdWl; z?a*TynT|C!QC0LEd26mHZcNxSp0=udn^j0sa`D0jgEGrR3{M9QG0Shk+qjIqK4iVX_7j-$hll{;gn~LOKCqI&BMIjH z3s<$Cg%&-WA>LTyrJ3JIhXp=WjP zE;h$ma1lBD=nQFfC=px14z&Xtl^9+2^J;!Nh%GsVMr||@F;4yivSdp09z^-%=AE&Z zl>HZrl^MCu=fjxNrw8$3?)Djfx*Dp&!qqr=qHg;vKF@~FfJ9=g3V($tI#TW zZqbbpX)kx>y>D#)_CLpt?uI|QdRsv=7vVqe1Ua|$F6pnRYYi8*N2M&6(iR=GB* z`}emFWTEN<(JiA5cez#&4>~hpV7`s$>@-_;n&`jhCaYJ^Q$b0Cg9fod4fN<`O)ju7 z7|fldy3eLTuu3j?Mq`-1-cc<-1b!a|vB#6XZ$GAs#fwAb7Da_okbWv>I6tuzSz85Z z6@d`oxd$R8gxPcNuLauEGWyBa2st>699`fKZeo1@S!h4~Oyw33AD|4`x(bWk8&89=Wl?Qbc zSm$Wl6q#^yrlen($%mQHbC^!TIFn)wL)ojeah<;sm zrXF9ew`02LLz)|MIXmcd{`AssV>|l(>og~dWdRgcJrW>{Jygtu7GIW{_ZIq=ubkVP z!m z;D>H)mi=R!9&=<&NGz$fVjCtUVzfTO`VLi7e5}>0r+f;W1)=ulIqr5kXxGg?Q1hbK zuI&G?M)G1v7I(X%tNaa?+owW<=ID5|JXF!kf7Jc3xyH$PhV$Fcu=WNfy3V;k@@1aK zxYk4vnUPoH%Ng`q+t|d8X(_PJRDs=a$RN`!iBaNkD<~j1du2(j0M;yon4OO7Et8N6 zqD4u<*cginwv?=TqB6~$G#@M>P$oKZ5Tou19%%BnsMRMcPjjhfB7{YGEK$a$e$-hk zgvgCVjC|a6_;Hi`rHix~;t?Zk%nu>)phGV8KH34>P1;2cEj$s&kR<#7VD2z@9&YDf zIT^ubb=*BdO66YYXa|EVAg%;?!mk>sxw-=hW_}oNGPqCdJG!9CYfeO^UwESN8q(4u zUj9=xjy6Ht|5o+O+yg(k5q&`JIWsA#AM> zQz3vZewWJ}IVxgWqQ6j`x`)ug+rKeqk+?bu3BBf%-74 z({W1x=2yOv$B`y9@8Acdv_aikKY!dvwaomjK|voohce%@Pl(0P0p|vPg`?s5JPaiS z(J%#G&L?Vq8}{55k_C8EoR6^DWv8Q0Komg(Qi^yi#<;gw;ju zw+%AKfrktyz5Uq7yo7u`vun#q@hv%Z0?mO0V-z($X~zruBHl@xYIy^nA|5BkDz#I~ z2A~0%>6!$9=O4gWgqc^vsmO9pvx3ilPid&XA)EhOMG*E6ZD%@h_b9RGv6kDLc2wB; zx6$Q;0?1mb$lqDN@juvBomNI@p>syd4|?drN_PcFF6(o96w)gnX=z&1bl(R;I|r@NXj})5qSTW8?9OwwUDzQW_?xs zVWHeVbF@$hyFkFs>IR?+TE7?MolpRd;5a5k{h@_+NSb3@x)*%ZJ{TVbkSK4KG4i##bo-_C#qcAGf?~7`%!DKib|#rppsSRatnMMc%Y8%wW;E41x*;_0 zcU1kC6O9dv7YL$qxr$ywI^&d=K;bTWynK>mw5}RDfN3=>h_x79R^}bqjeVi*)4GuN zrro|1T2|KEJQeUH>TC!6F4fr~BLRuxpuq(9t9G&t?tzt59+C~-lp}gu3z{49vO4HS zd2`YpCUIjONe*I0v7Tq?B$ckvS4OHzDHJrg;xY=6+@u%RL#g{u9y~A#fdyhfWNT z*-_*$nD&u*TdKZ2;;`j*v~}(qx)hHnh_1Il0viu>V5X=^NwhkrFVzLoG`~)?^RGxJ zB0U>**?&gMLmw9Pg1%jM6K>CUV^RlP1ki=mk~O=-aS%+rGSx16FR^ixtGBB|i3L$T zOCOjJ@Sb7Fc;q1Hhj`^z8!Vc2cSAxn)w%R?zL{#V;eF!!x;7{h5%Huqk%eDdFJ0N2iSyf zWq{K{syKd7w(ctbQJO-x;r6d{#6u>`rkTy`uxM8kQ}bT&_rg>_7BZB@2w+meGGjzy zS7Gu_J15s2;rSbGidSj1hNT}6(lAy}k{&gJM_AA2nq)4WxK z*m0F;ps(<0!oHo~9t_g2sF|Mwbi=r{q1^G!Xvq1e41)H*w7EEuav$Ht-^}%GpTZzJ`SsVu))Q7 zHeF59MJ+Gl+Em!i(TgoD#YcASPq^xXgAJ)FuW;hBMdf_)0-{1ry2-E%72fd&s8zcnvkzsiisIgc2sybvN!F6uMW&P^@Ik3?K z)|sNW`0L^wE(yA2TK2qxD-AMQ>JdA=%=Jnm0Dm zbYy5}f+~L{_Mzp$=su=QE4F9>D`H94n%mTIEfSr+eFGj^Z+eY}DbTf!*Zy8&Y-N#P zd}6`ZxA?I*N7W{Y3KWu8>ca<>!U4q0Gh-VPA2d7FTiqRR)xF8*fT?R7X~9 zsZq1WB9*i-L6KJs2iFgZ02R{+Laj)^I#weeuIhKsUP1I;L5$Qv5%ILK56tTC&qw4! zMpmc!SNLZVv93Xl5cuF~1bub<#Iwgng9&%tb4xvMPpMvEy5$j#;^mFxv2)C)l*s3a z0~cD0s!Plw)Ietoni`V!&2#a)R@IheO_H(8v+k3&HZ0FW8*z&hyZ-v?thqPpgSw1D z1NFbAf1DX;G&(g#WgA17J8mz|pob($Av>tQ>ZuvUX9ca6V>!9A5h8L`BVK(zcj?RH za_^UM1;I<=R4mQr2KwRYZq2U1aV+k?>9bB+b~AYl80J}KKRe7Vi!0@}&6bJ+w$c(Q z5VG0K?FT@|bS)Kg8sWS1D~2208546XEm)XDDsrc=z)N;|BhUNoZzpGnnJx4F>EzvN zdMhR!sySKO)L%=GBCLUiX`$*c!=jl8U^@YlRq)d7%*UmzZl(0izC8NP7klNJ$xux@n2HhjvADT&JzK_;mV=z;0b84zwj$b*Eaf2E(MvDVK3tuBi1N@ zYm@1aV+8V7^d)lHN(x72RMQPfl7@2I^pw2Ou3JA~k&0sI?2M~*4nm@B$2&j7f#@O*y@{X*v2&$^b zHD-X)tRY6{9WqXKBThTnq7_yvY2vP*#CG%$M!q zY?bQOFhf$fX+u|!4i?%gh&C#S8apTkOe-Pm+QvE*gbqrMV>1OH6e!zr@6LVh<`oD|4L;rR+Nk>{*3HHA%mFQ2N$AnaAuNlkv2=|xU7v+CRStMS& z7K??6cD60$gAOZV3K;Ti3jK{WjS8AuYS1Srqj&)?$Er`rGJ3Y5sgQwpm}VjHDGNyVat({Aot}#8<4ro zSh(sW8%h3f$IfLuy)Cve3mtBhFTfBLZI1Ki6xjury98xkD$^QJpG!s-r?2Ex;HkKk zCSx)C_E>gTajsebe9_b-!(lpBUJPr(1&uF9e2DvY(AEMcIy7e(v@xdoV`f9<<(=(z z?wi!cYGP5?CW|jGAzk6i{v7w&Wikp&bF6U{R0l4fbql=P$-DakFiUHOi-p{4;@p%( z0ncRo!tUn3YXv3#r>J!Qdh!*bAcG!`P!|2&6#3{+7GMKufK*?8y3nQ}Rl~rshf40K-4M!^Z3*4GfMX>{zQUxOJ%&s!jgq_1 z%Kn^$;-Q1e+k7)$!^$S&iAWhA61u|JY%EM_^l}%*p-ScO@AA5uTS0s4YoAVFJRX2s zQUx?{$N|DBikFv9q~IMFu2rVisV50HEzTq31qXZ3lHii9l<}&m!Q}2wCp}nxX*pRz z#Xq}WZps`nHl(hZX5ViL)f*`NtL_EqMxngzYuajTyFYZ{>a*uolI3^&AE~AK(AbCQ z*hAAd%v*~sP!Cl92&(nmvx+nbLihv&uLq&UJM5I0^1Czn{gu+zW%(&9mZ5%asCwrt z>mI6w>tlD2BI^yg#Y#C2ujPg&p6v$K{3igF6L8Wpu3 z_N`SqMNmSH9&e4%wQFpfSq?J^FM)QBas-QVtN-#QSK+xZvCVFY8b9VtZ5X2_3mZWf z@bVOLC5`26KPK-_i=qF@gcx$oeJj--K>AB;NJ`falehMx)?skvZE-7k{;Uq|MSX=2 z;VU#y$4}TU#9FU6oaCrEv^h=?dR(DusuhC;FLfr*y|9v1kw!L(JObUPD4GBZXdwc zI;x{)8PW`(O3JpR!x8wtj}O(vQa%Gtcp!s76{Zc`i6ln2B!PG!7=$tl*YX?HGZLdo zj*eW+ksSFG64($ZBa_7}qS;K)fDd%}hUafKWK}=`rzA??=7`&*rzJt}Gidly1TUS% zo9t#YvmwK({$c@d+kUiL?d0A6$IvJnnNlvR&MU!B9Dky&e7Bnicgli-zf{qN_jv9= zc+PkugMtSd@`co`nGFcTAxNkl{M2P87`9(#?d3+TrbgO#j)AgCEvNDq2>x(d9->UC z=E{llL>^j|yz>?m!Dbii0ij#;K_vE)I5oazQBdetV74P;OFHs&FBSeBd@&JZ;BIz( z4(|2$pArRGoNbcSUd#HL@kI33h(QjuieK0u(TKs@cn;o=b3V~iXj^8X!doSARjd3q zolQ;BxL542#o68pWLGm*p$nD4WxUH?Y0c^4AAv0)G;3Y2iu^p^_ySb6@kbG2@4W&h zj_*R?)nA{oAHPm5bDHs;@>9;Q)AnyU_ztcuEvEHV-7>eeGWBJN+sNs7^O4%H3jT0e zBuvjMV~aY#QE~ImKNfYSQVq>y?VgB}+!?lY|%} z$|w@}yrgPqvcN&@+3bY0skV0Ja4pii#5IIiBoi8mU!FJpL$a#B?v`6jD(d46p78QB z%i+(JVAiC>abg4L??E=W>@+#^+=)T}Vk%q)Z%Tt9_wAq=$kLxOV?P7 zo{IQR33#G*2-4~m?eQLhv;{tgXU75Fr5C7I`g@8^8YnQyX5~OJ$CzHjPJB*Ypf6fU z)l`RbRyv%P_jIq2BS|73E!s4d-s5{Hn1kQbDxAS(cP8SVcK%U<}vU)%!> zI0|UYz3OaF6V)>X6cb0aMK+8})1N*OgCM?r0q^bucTvj!WYS7}s;f-J z(h(KV^8G>DAQ3KY^YRZ`Z&LxGpDK|O8y%h)Xe?~bFOZX$W*;I~ct{B@`3U?A-* z;BUdky0@I?rPZeZf77A~n{8M$^FshBGV-jLt0T1HZahprq$O4=3*ITD_xQUT0YVGBV@Ge9 z71UFsF9yH7OQV1ctuz(t^$d8p_8(eX!i{(uR}*2U4HT^K-MgparSNe?h_%8bi*&I$ zrVNGMmeo3)HreHsJi@p0zttgpZmnb2c`iAGYMsWI(E#FuV#Om*Qfe-(syx^4sY zyfX~p-U#(MQpI|+0(9M4j()>5(I7s8SF;6Q z-fnqZc6nxA^>`2`4=8d36qIBaQ!$@Lj^!!-8MT32?y5 z4Sqm*x!fZkR)q>E`g<%^xjNpo`qvvsKisyebx|Y$E!S;~DP|37bl#zcCxG=LwK)80 z2FU|uU6BK3#+iJ~hmZgjFlO)&~)=G>BZtFb1?EuE)?R0O9!z1VqH5no z$X{bgMk5p4Ao)Y5{#xlmXAdo4l%)YC55(;t_S{bKUZZx@W;q{`{hAORj*Lvba=MF< zYt$0-l{XZHG^z)y*!SSwzcU^oMv4nM)gm<*E|C)7c}r29nNc(1LYs#jNVX^ro_Fy_ zE%*fuq%^b%d;jv{s2V2dFiwtjROGjQa#yMQBmDTaEsi)81GESUQ0D6^>8Z-m$>r{{ zIJs=!Q*VIGd}`^g)*Bm@%uK1zaOB%;gs6EO4H*XXG?!)Sm;do!boTu0xOXib=E`}_ zn48h@f@a+Gcc9qcTq+uMT=6Z(nK|v(>tqa4Bdm1dFyEb0(J(NluiT6~Uo|`x391_j z4L7h*?*kO`xM3rVYaGINAs^Y4hlX)gZ6hjX)jHDM+CG5TTjL>0eoZF-sC^~jh=ZMK z$Oan)q@x^9+j`R?_aH+~L)z|r+b0=b()3FdXqkW7@Z}zI5s5NINkFJ~qQ<$In5uHX zMbR+KOBe7xu$L^C8ca@LOm0F7zbPvy%LDNx$}2a=3Sn@@USkxdtV6**xEOE zslnx0b>}?o;c*-})n9n(sisJknXdc&M_nm>PThyft^q=! zDgroZ_#UPR%cN(1b`EJ zX?nR)^ZabS1-BGfT)?Y^P{2Y#7{m^9_z!4gFmDpV!Pd? z7+;7KFiVwyM(y~Ce6~5sre9IeaY+c{nUr93y57fX)*fJl2rp*MRd}rZsqqiLicLJf z0?S)5=$>5ubeWRVt)G4SgrykT7X(+p7C3*aSdE9)kPz*Y2(teMFk~V}hPyzaJff~b zATqWkxq1I+4AmQ%btW3?I@{eFfjl95{RJ>Xeg zg>&P|{2-2jHkmw7ixqr@Eqc~;1?vAHzbz>s9=pzCw=9`bUf)BG&d+jS?49p2{ed_S z_UKfLGI?boz?78j2`$hpucp9`<2Hu(#!piOyS`Z=`PS~wMzq58>`9Uocwj`o4 zOn3@go(3%VbG`O563%^+_>oEeM(h%KqHc`MWGm+?ZERl7JjnN5mRi61f=A7F+zS+; z8)X{&+H0@u)8jsGk}su;f=gtE5taU7I>=4qAstpfO@e5u(Kl9+@Uax?(LtlA_h2w{ z9TPv(uitXXoYwZ<8pvZ0)(YUT;TAUiG%jG3U!SnQYK}Cy+mxLos0?)Cm(z^k_`5-Y zRXsK#cbQM6A6!MJTsViAnGlf;iznvasc@(q!viNnU1g{1@+@h9{%Z}l zHn~Kj0fFU4*Cn{djLGJA0->o-<8gra#ctFeauOmW!MQ{T$YV5=0$TB{mMssk+h zKD%9aB1x6Is(95Q?w%1NVvhU2Q<)UBOh3;X_Q_1fx@eCQ59}+fMJIWxxofu|YA{E0vZQKh#7TM2xs zor-{6aZh7?wkfgZK zyP{2bQ2{*)mKxWjgn1$ZNKI8}31u+2T=h8F(pLD=O?L!+V#^3di<#gHt`Oz6vT{%- zQ>(B}@B4ZHL5K&)hUy2e$e9k7UQN1Y`J12s1Kk0H;b`J*74wY^uj5O=q!k=oMy3+q zwR8h+)9xGxj5?FUhF7b9gPsJNXFC7A*f}|{$3YneN?Ct?fVCnAyl-n>{Uvi)JC2IZ z4y9?rBPW@B$$#APrH+}D_^JrB`Z&^*_VF*c4NbezMv5}QzLgo5xge}q9bFqkDI2jf zU3p(^dc-Hc&;aLcG7ymxQNyKOi%UqZQJKRPY%!J-Ck)?{N{t6}tm7w{xty(Ph3-n7 z8VN3@kD>`e?j`M5hJF7zbYKEQuCTagb0p zzCdRfwX2tJ4Mk)gUdPbTuR*B#ZNe1*iYZ`qF4vvo3W|7*r8~@v!oiT-Fv5(xoXejz z$d?-Mg_$j(X9#QMi+bH^OLSUb{*~-+`QbUFy2liqDgzB)&xwg)*?QIbMFrmq=H^j1 zF%9cH_3qUQDY~(>Qjlrl{QtUQNiZt1z?-|N^VO=a1i=3i2%0vd7iw9hoRZ`PMMs4- zP9nl`)?DM=jI_@jm`%^1{ye2q<*0#m8{rospT)-*DiQCy&p*b}HDK23Bw=~o8&6A2 zW?Ev9H@CtC z1Z4)zOXk)V;#zZO4&jdUW2)`K(w_HnCSzf0nN_voKaHz8>HZ!s$fgf7fRGbbNd`yA zK+fajZ#5=Y-EzhK>x-o#?NOseofqFgG1#k?FxIgv8Aq=nSnSl* zq}=qJR-KnFujL{#y_<>5c9Ol%;wpCajwZTFCA|Fbll!4qetb&5XuJ0Xj(|!FPL=?=o;+R80ww!>fG6 z?LDl|2E9y33dSMGnhszo7H1>`o@E3Kw2n14M8o`!{T+TSgC^_?-!MkSPIKovv{-(% z|9TQ>Ik6~|iGQG-SfXaugIj?n-bP(+eORQIKxtKwm74Ra!pOk3f>^>C0NyjKJA<?m}SVi zOQ9ud`TrXX2?|tnz!tVCQ7WP3E!4OqcPO16@`bnelG`Mw!T$O<$Hq)K6oj~!VUq!k2rTl8p zJe^4apJz`V!Fk=EKnySn;uSGONQKf>aN4|?+_J)HKVUkft)XUB1i~r)Nh1eqcUeeh z`f2QBMOiAZxY-MNJ_$=VyVq9Bt}n7^j=)^RXI7a=>-?2drZu<`kO&_)Pe`u-5= zs6^qK@+C9ZLJa;jTp=k5kf`T`#U}wE>R6c7=CdCBYy_a2EBZ2N;(@N-3fHr{wR)g; zKcffE2vH|({>1-BchXi_nqZG!V|1{dwtK*7Zehf7yZ2==!{#av_|zVQMJ!TEikl$) zufozK9SSZFw6S{%tO{F?!odmK@vA{lDYM}yrna_zAM56a!i|etn`FP%;RdKDHwP}w zg<=};rc*inu>M?r7jfSMe8O#P<6}i5SU}s3F=H_rTab_3wuLew>2`Tich7(mF{tIe#y;Eu`@RD~k7OW`rJ>D?%pc9Ajv z77Z^=JeBf$rPU0q2?V|^z6Zh_Kg^B@#=5fep9{jpVv$whFDQwmT@u1yww5E4HX^E* zh(qg01{AFQg8w6i+B-}eR;r-KzX?dIl5gfKrBKp zR`9vW$5M@=*l3K<+E`wqfVSLbdU}vKE;NKl9fU~wu#ENCy;ijD_X?;#934$9g+v~Y zU|7o5tiP51vw?xmXUd%wjW=l=9eqi0gxic$uD*qq!jrvQ=KZMlk4%Lvoq&e|SaYH< z7tMGusiXFnlHbdTm~-Xc4sZlf+OUXM6+qTb-tAJo78%WJE7m&?l$Suo1q1T)h5NNw zWh#*rjwZ>+t-hB9BHsw2%x~?%E||~=R_Jkpf|AAYtK>t6h%GeklM#nsj$W&HIRdrM z&uvd2RFpO##4yfC_RwaOTjc_{gmz=@S(vHHMV_v0_|UDcoqD|+GA!GG=v#&P+^`M(mjzduF(YE%&(`K%= zr+WgNSg2tm!lJeUeK{lY!c2;PO`qADs+4!LFxn`4I3tq1xz9jKs(B6Z!rXL1;mkFy<$(v=(v$~yB}6HKZ8W0 zv9x4qqZvM*+DTL-C&EZ4n3nvMcQCleeEb%inQJLturs%9frPJMohWBf-zrMDU;lPJ z#|b3HgC8n8oZZl}>DZA-SBMUi0r@8rBQ7E6`F2T+ofU(7Y4-mu029Cz0ZUuWg>>a3 z-N-a3J_EP!$>DmN^(m!{BIwlvx}M$Zi%XA{z9YUnKszsB<`(MI z4Q6+I89nX;mU*8$Hz6YydN3n>m;I~NALrFtvLHK(Es?+h;#1xI0P)WKiDKWMMtA4Y zeEj+!@i5f#J^ob`e4}EM)GGBDOnk67l9blgzdcxj$#u*n3B0?@xtt_j9@eJVqCYkEoo=xg{-836RR1bDXg>SK%Tz#vV5UW0)zTLaB zlppP)CnlU#3l8m3PjK3hnC^T6X8e>yUDOtuN3L6Q5v@$j(cwV%I=G#jQVbIqV^|JmBNoyU*tW49@^8`F?#DKMt znb9{|Ja2qMqIRPfZddx=$={%4m)6vn#4_)yX7X#Rh#)Ia{T(#)6}^8?QU@`x`s#c0 zBu7%?1I9a+nX)OBGeS&E>d_3AsJH$O8X&*@4|2P-QnqeHtlRI`Oe=@;7fJsaP^q`w zGLFSE@6WQKp{{}1&B@Uc^Mip{l0qk?^8~JytQR1+n>_D7r2NrWDfaI@&5`EK_@eB& zVEd)$ArFvkX9<2LIu{_45WqEm39JE0}``YFJ(!c*OXuH5;X-l^A?9_P@MzqtqB7>8ULH~dFa@v2p zW2%NDU)2biqA(#awrjDOB6CWQee)n|q_U}rC@+$q&p4MqSUjk0?#N68ond_cWWjO8 zEo!D!bh3AsyN#qL&=@lcCLP@2p}(_j0qdyW^k`r1?!D+os0tYdJB7%w-|U`W{;$bf z=`=wbU|8o2sP(1_3GFkqvUVODPzWL4+JYh6D-wI#F;ngG=v0JGI$>7P@KHLH`HP7K z*Zp^>tKgA}6fkJA8G)|~XVJF76|VjmATQRX?`M_7Gt&DlFk4;ru^WqEiQ3$E_)mL$ zqW^8FXIfvYT{2xyt2WOjhYcMRzM!i_wVi#NDp&Fjho5$EEch7+e(Ck{^&wHIkO&Cg zFVluvYQVp6nh|o(gszB17GOiVgdl>Kv;Qq>U5)C&o`7QY|2q{u4tPm#WrETD_oeI; zUf;NzkfQiz#SfdPy8_C32Y)9q!_A(Hin-e(Rx)sZuoccT62*4jM+g4sq#c6YMd*~{ z>lD$H_{>ZyFnRKeo`0y3MaoP*}*Ye5wB^&0ek+-C-N-@3%To`B2b;69wua}{PRzXc5%JNd_t{@TeOe2!5E3yqBF>$$iOPBHLt0-aq{ z8?Kb?g>^;tt8Hpo`OGnp(&F9+YaHk9eh9k0!%`62`>oF4QD@k7BZv)c@MruNi64ZmG!d;#VSgZwZtIj`Fjl13^8k5kC1;{+-})0fotH?k@ft%nmjV%kPO z*oL3C%H#74BunrExDL?=zl1HD6hwp<*_^u@da2r-dv#Y~7=*;(BCnf97+Es5BkRsz zpp1TQn7b=m9?@a3pkH)#R468&ra`tuM6%?ACTe=BeqXMCDlYB>Li2obH+mS(HD7Fd zif5A6(?fN|9GKu<8QQ}4LIKUnQ=*VMkmgA|@WyTFv@Y$Ua+=CXVAT>h)3D~= z%X_Ov(G3?Y;Hb!noT8JjfG+6&b`TyRL%#biT|*})2!EpOF+@`=pAkNPr3vuEx4%$z zh40Ts(KxHVsL(uAtPehX<1R4h9^{T zB|dvT-84M`3Vp&UPyAlAcIL7Rpw2FgLVtk<)SlS?FZWNfyBlfV%`cX1;X@nO%)9PX zia8^To(jN1uiRvMD55%UH(%ii>V23@5`AZHhy^9VOEUbg&DE8y+a&SL`I{(K-joTd zfBk}UU*DfZcjwVO{Q4I0Fw|W7p%DVk&Z}Jvz-8lBUZk6v#cF!jGf9@XZUwW1q3Z$? z!EuO__wmB*cTOo1+nQIz0rpx?$qOWqMe_5%q*XhfC3oy>sR;bUPcPXj`%FWzQ1f2I zv9r64fRdV@z`W~+oFGo4fwV+Um42Ho2_SmoJd4rh-?Y%mfG*-Ifbo$-=>SBJG|q|a zPks~`jm%5zRq8VzIVj;3S@I^8Z}a~`hXfGUIn^v49{5KZs(jh#BGxGn#AgfTwqzh& zPk~0)IMPHEu~rL|oo}n)&lH#Upkq2Ytm1T-qBv=x1|Z4uf|Hi>P1mlnZff=Kh}uWh zq<`@q=#F2AULNB{ud}4An%?wvk||$PDPFO;#l-gS`+ov%lHUBx$ds!>H z3m|;=VX=6W%_!b$ey5u&4%o~Bi=hp#5GL^~`wlaY@dGaZXGO>YUun|7Q2M!OhXT-d zaVNa?G;rN}zSs1JRv$vPOwWVI&-NSh%5yaj%wIWcHNPz_p(<5~f9#f-$7wR1pZtTW z`@&12X}Qd`)xSqtzd_2_A*!WY(MW}#?hIx&#oF2T@4M80RT5BE>~r%Y%!`C+EwNUu zUJFLMK5N|$s;Zxcx?U2g|3WKjCbik1fuFCl`WIopBdoxtSykPSZo?*u)h|25KKUeLE*-a*svSHdj;^_GNIXF%DzPJ2MYvxap%Ou9X! zK_Qnx97Q8+w(DjFBXn9}H765`o@w3AsCh1K@nAC|$W-m_&V+wGsT5YRA~Q%=0n2dZNdQqO(6j-=>F zor*6ahvGhJi<{0LDW#eI624OeU7mIiLc@pgHsG)10(L8LH@!zYo5bSwD7Tor%*MpE zDdfX=dTYNsDsfPh@3>UhEplYV(2qs>(*W}3?j*kcGz37}99~w*%k?Zt1m(A!amJoG zW}(`QQ82|vq>f=Vw2BFM-1VgB#k*fKxK7e0@&smRp%5-&FwC4e*wxcPMR`6BPGGY( z_MBte5jeRIiR;G>4w#>{6=y?>+N+HyI4K=I%^%}ze3yjpBey(XGO8TP%TB2b1`#MX zMK5DF10cZV3>~V$Y&&AXeB&O9zqFpu@DRqLTXrIS${vy&I`c_G)Brt#nD3S64E){K zk!#3Ix~0x7E<8366&HW*tzf?T`+R1j(qJ7-^7~m(dKZgAijo?B&z_LkcSy`xJ#=X>@9Gl=@lp{DQ5F1HlFzF1(vWZ2_;V&G zQvVu7<+V}Y5^CEk)&DNsPhH|3bwYq0$c9j36Xej{-*e1y>ybX~A18sr`uh~3Cp-cC z1X(pLf7DTaA!(&e!(d&Jg|n4B?eWo%>eAJOW*WPr?jJA^K!iaPfjTgF_;KJ>a-?n= zi@qeJJT+|WH)mFkx3^eIFJ6>`N#`P`(A6JADewbfkx>CMSAoibwS~R?TiA#(#U6#xJ-8A-LnJVtnapq4ST; z#L|Z*@n%CVtuH@bc5S%afn_^9W@wAhdKN96y!e z=01Z|6o5UXB z3r9iE%j2x~zh)$oCt07VR|IvTWQUz{kkzlvbz@aTs7dk?X|9g8K{k`OX@t=UpVSJO+vHcz-TGmLHr&SyFk$Cu?2dj#= zT*j)`bN@I4Jd^MX2$JeYKK}DI?Rx^iPqQ}`XoTbbWi8yAH{{xy#>qA9V#4}yO1*6h zpaq~rcWnWF%M!U$g~jF%W#$q-T}>_+#lXJpioux&L7B_iFXKF$Lld!DPi}V0U6__7 zSY;C5?&DHLUAY>H+|_TWwA~rXomz{}NWna3>}3p$p*M(KdYwM~E;%kAJ>UiygvqeS zJ2zk0X=i8=oN}>G8{|jhDUEmEhr>0>BE6{m-zR*jEV@E~M80FE8OfE!KJA7A?4DYt z%7kq2?ma}|I(Ie7B7RVm^5)Qf+$eq+{}ZS@lf2rjcKt?%2k31@xqUG(GoF~Rmw@wK-v%235ybM6BwK{RVFZw2OrCZhfe-$UetylMz2Pj>zhXy#YxZ`HJ{NM92b6`Z-=%7OvJFyHgC+4zqiNQ_XYB{1)fqeX!L+1Pt19h^YM@| z?oHSPCrwYk?qU#L|9s7}(P_onXHlP<`e-|I{Aj8|NN!&gG8N_Li6|azVM#{jtry#0 z??DoC!JRSmQg$S4!QO+{Tw;ENSg|(DseP@k``S(VbH6l? z&a~qB?Zd>drmn5psdO?GW8#;KTGqH#m1+pip-!9XIxImzKW zyTC~NdTKaIvrmVu6C7j@c&+61(5yWd!#$}HbLKLdx*Dbs87@^xA$N^C+rVm86yEoM zV+{HtEA2;b-fg_q6vba5IQGW6)Yq~=6sL6}aTY}?TdrJ5IxSkfCh?{gutndu%kLoc zS@fgu*}LS}Tu>nlD&$o-#l&dFbwH$u|2*>tE#jV381QQ`$nFF`ZqgczebFsvs9~I@ zv6fQnxk2+kNfS1MPC$^Ou6*>e$E#2*iGTp^VR}sziX!pYE+Iu&b<#{GTarQue}n$` z*WDO4xLaet7!LAW$vQd>)>2+5DO_2QIE0k;G7D}XM8qgSMs@(CKqM_+qV2g+kpt@C zv-QtU`{M#W$s@vHxS9UL{)H*T#?01N*`|b zK?HaQ-9L%a!m1^ua?z$zIDv6d0TJHD2q!7C3@gGhTPokesN$|$n-$QK;h|S1l%>~o z^4oNF{186rTrUjn^+g1lv^$`G7+g%=q^X)UJE9{0hbvQP62-bzJU0Zf!Qp!FafTFa z-U7#LK5NJ<f5@svN?a#+yg+&p z1rxFNExxhIx(cC?Yea_*t?%R9$FbN&-W@o_Xs}>HrC>G0e?A!gyk(g2=)2APW0<3! zUFMXuX3i@VImx33Z!3I>x9;Z|{%T2JeqHqCjP|D1DGlqhk+*Vs2C6H7P4wnor}WZv zN>cioU{O_RO{xG-M)l9+KchB=788OiA&!@%7vo+e#6@As*8>j1xdmc*0PLSOA6T2k z%cjyvMI=!7T?axV`hF}J862_kY;L`Pp=hW(#rIb=%dcbjU~iN9GCo3NIAOnKee7o3N&Pq9s!gqW9T zr?hHlpwI}@YQgTLUOw$_q`rB})7BVA1Jm)?sJxcj$a&OT>{=~vPW=2PmHZ#brT)zT zO!kOMt&%x6*#aNgy>lbv0>Za+$gOVP0s*gu-cj4&KvuIN!1OiGJ>JNqYfA>{=um$+ zLf3Y(%QQh--xYoZC8p>{VRjFSeb>L}C2XuTT3Ac?~G$mhb{k z-~S4Gknd8W=aznIFNodHb71hUL&eR1dzz4a@B}L`(4!pPe^Zf*m=dUYela28?rPM9|NLL1mSZ5c8gWH$3 z($Ai2YY;9Kzi&hM$dP8DnbVQ5)X|ia3_(Ygtm1)<+hlab;_nmX3D^GwF18{l_Cx*X zzO#KGcBOd+_LVqUbmR4~89###GXqNTFukLV;w+wpn4QBgBnF8TjKqfLE~~EQDGShk|3%0HSBvym%96U zhnOZ01yd3XW=lyf4O|&+ITN{mn=aKL>{=@5A+#h!qJcAqD9Y8W2da;$s%e5U`F|a% z#Y_%2No0c08z-bi0w~DckX*Haz$LST@&-Ghw09^u>f`F=gHT7?f;Hf+db0NAWVGAb z1bH0l%AUHoDOn!bXZ#XFGbxeb6NLFtpPx%kbKX#i5Q9{~h6bLWf!xFc^Qvob ziZiacUoylHK#(7eI>%!~6GSDtCUYuAP8U6FcS}(@PmljH;^q?n4sC>&8Q3N+iXt7r znbH*QpW_Ut?C+~?An#c`qjg8XL0xOR7c`lP28GO~#7)*tQ|Y3z`>7PsO5!lK*2yUD z!nJtq>|gY;(vFs*QE+iClwCkba0-_#S9(8u#r?RVv z;*D9*Z%s(&4_tnNB0d1!AiSFpHZ{PH29H<@e)zLRu7!?;L3BP=hTWWs8BH6B>w5$_ zY=^3SzVbOcfE5e^4bci*f4EtzfF&6YiJHX3F0*ean|mG&g0sM9Uu*V6C<3Pq2DAB!f99L_=kn$25$6Cw z!C&mHa@AHl%z&~id{8Qo2T2QB0?P1~iq|ra3f8VZC*n>wiH$S35aLHF=YNzwcZohV zFFv@W;7ZUwj=e?Y;dGl{5$$Vi1bDqqN<&yMH|xGyQ7|Qr#GTUjlDHaVz>a%JtTDl) zxn}`#WvTX{S7N#eWb22Tvg>REuOPlYj$m2?fsF`_d+895uz(jgnoVa2=x2yCoxKdKK{-Q#N z_E<^jDgZplQw{kMZ(%Ie`~MC-xCVf-UJS2*!nM7eZBzFApe|y3@MITWkE@~yECOgwJn$QSbWb_eCqrm0b!L1d-S zI`06SVBe)mom}u|AR_-rVirUk_G$$szJ4o@nII4oPexwix(A+)&hITAKh))`%Jx@B zr<^J=Uu3#1ynlfU!h~$176oV%*Yz=S5dUllfQ*7W;MVL{LS!@}h%(X=@QPBtf&-0n zs2?gG*7Dk{t|ZfaMw|@f-aG>TdmT_0{z+t;o5PeFB7*ITe7Adt^VUXN6 z+_O)D`zvC54_nd(@)nAHvy6`dEVy;IjN<|OR6dBZ>k>c6lIe8%U4@$`t9bcb{ntc7n zG0_e|7aICvoxdzzBr)~wKHS;~DI?$4DF?!6XXwF@TFFWi7XJPd>)bN*(fD-KLbWGD6u1GYizxoAa z{{k$p#~oX%o4!Hn4&ievL2s4?u||S5>!DI+f?Xe_2CI2WwFP8-rQggcJ)|SudX9 zqVAo&`t0njUkh9V_BO|+uadlb0aL%3+6sCbciF`;l=57;NpNR#BYQL)H~m7=B*|4R z5~iG=PX$>yX`t+lyTHr_7v@0l(yev+p{HEVj=R#k!j3fvG3WX@^V;Niis!mS#z2>I-xx^dA`~%9C4nf zJSG`V$IRJLe}au~&h$2LzEzi<=^bi!u0_WcM1f9grkEhh^Hpd(nr3QK?7?LSFX%hw zs=quxLZ&j=D><&lh{tYAz>pr-N&Pr0PSZ0Ky|L4P1tuENW&%q3$L~*}>L4tT{hw*n zV;3W=2tiaQ6aLY~oox>>BXbsH4oDlL?(V{wLpL+Ww;vftOP17URve%L|ZJH~vFD5-@N z4<4=_z0%QwV%gqq`Oh>OqP6_w__>O{P-Y8Hl8fqN&B)|%3Wn@LNyb;c|5QaRm&AXB z+aYD_B|2Hm!JwX|i!7^$w_dnafpa*w2W55mDKRxRp4Cfhr2 zs#;#B2rJB9dyXDlt7g)Qf&7GHK$jj3Z3F*mm;`%x)Hmb_ubfLefMTQb>rvuZAn z1DU86pe3oHhuZcLk^Q=b8a}qe@O}*af!Uf?@Tca8(DGGH{wPcoCDK_Nsu-LS>tD4s z_N@#eI20A#@)fjr{zj5A`QqjCF&O*x$b4Xj$PXWdQrAt$xL*ZH(%^OO?I)uMa@;D&h1ny^bnZj2H~(Mv^FYXv z3U2%&;^<2-I7ah!DL!=KMd;-8(0K2lP}cfVn52g|FcYV6%Zo|wrM(QN_xb*Xh#jO1 zyz$bc9B{Fn%K1-m|002&-^PjaG)>ScR!0gN1i^NG0Lr--CtHWHgg<1yo^vk?1uu~* z6xu;>k{iutaa21yhSGGr2|0swVh2RgXN)Zur~#sKmMsf4QXrzQHBa)mr)`%rz;qb3 zo6l4TS%2&vQ&7~i{jET(zz-UR10tW%#=RpMX`h_(+)3!O{|-S$|)+Xh!AG%@IB>mn`2QZRc~qv8Z1)Pwo3SEpB#5z?*yDpvwN#NM*YC!!0VBo zyf`v~;-KF;1II`phB_gwhro`ng{~EUDgLsq%IT0Y4eW0X1*E<~hG;NWz5_o9PqNU_ zg#xTJtT~u!`+OY<@TiZ}D84Gl3M!$%-nnwN*1F-ViEBP-Ew*LX%phzLO~<_y@|=_) zR~jonlSF*Al^rtNQUL((4DHoiAgXe+@vpYfZWO>PSxvt8|aGqbo# ziCVA4AvB1kG|Y$TVTN52ci;tL)0qt?UkAft<*e-p6{zMZ7ht*@Wkifl;uqg!Zi&%I zq2>M#bce71FHZBu6Tu81l6N$P0tgP@j9)W)XcFm2csedjEkxwnUoTfG&tvJ96sMaf zi2c(Vv)-(p0FmPHAex_E*{?6?d^&G`PDbxr6C7R9TyK1(g5;2se#EUbg?tf~ zfO$i5-xVfNeyz0kvhZ!azqWUl{CG2Az}gS=KL#P%)LglX9WmnO5!o~}Elo!L6WM%Ts0)bw`253CsrG!|G zKyC*3wVf2i4oEyg7hj;?vx-d-+N*b?sk?^4(cw0gp@imFo2~fZNo|8k=57OYcKQV# zI=ysnAIrLMmT$H}-Pg<-Fv0yGL9GPi;WcYsa4(W>LJ5JOQGlVD$S)SCz|D)T-mS*sPgh0 z9wgUV(jq=sA1H8EYMi+x7@IThzby@OZ*v6RJgmgU@xU@P#0G!z2_Rt7l9SvY{>)=F zB!a@1yVYZr&)611m{-EFwuSBS)4+WO&E~TU~L)oCgj62ZXQ~gsvQ6`G(tyj(`(AB9waM*8aWV7~71{1;nw8FB{Rs+FOO^NH zK`KG@%r&YBBkGn7 z|4(E`j91>hR+&_&r6aVy z9H=(A4ORbh?95xueH0%Nf_p0ErF+>FWvshLC|D zI0EAAzftNnQ3!$;P>J$~*}-fIy)4(OG|4{V@)d5Ae4Ul5bBI$ClS-OejF%`M5c~|; zMUq~7Z{e@fBNu7NdF<8QUirj+F6S7Fk3@X})2{bUP!znsf|jNC2^`#N+pIE@%$b>* zze|7q->-kwOM%OkcHcDNe9AuN{KD<$S~FmEP8F;3Ju2Y#yU zpiK-6s({K0kaTY}A)J&)`0Y^MN#lKVPMtL;K1piE-eG_-Ou1C6+IGG}{x(u>n>|W2 zULZE_Z%!?A)oV3RxY2aD{!|BesILXkN-AR z(mrvG5e-ysv>QIIMj82bq9~X|zbO`%CR8D$fSC4Sx7zMY)BxXwt2_?{k|pHVOD0nF zXWU+;-)g?BU7kgTwSNty6w|Q_Eu-gKgO!ysh%h0C&R~Bw@w%}Ix(tqxQPKOje~T1s z7Q%^w#U_-b}E3JM)`}R4$zhZ`c` zVa~cFnw8ve78uY?Q(pm^Ke~f} zI>n>XE|WzQhCM#MMw8}Is-=n_JehNk&S0-Z%<-*xG$v(Qz&-<{%>2t^4xPw<93fLd zX91$(=%6BK!a~#u@4Aza5Y~>1kd=1gi+_v0EdK}Kg0R2w?aFo8OAg|c{0DOhtmPHV zogb@$_2hV&CuGYix;W4Q4c)beB8AuaopTr-2Hbe zY@m&|T3lStTUrll@(`MRY<2T1*je(sPqxqeC74y53S}o3ec_nZtA^;aqN}n0a0)O4 z(5DVyDPB6jfy9xUO0J936M(0Dk}!E*9#!S}WQ>^k15Eq}4qglk{5#sDfdlh&kR$*M zQ7=jdUfP=rLMhgMzxz~X#`!BYclS#(p+6s$OK#Hjcwepe;jhG$BDt@J68Z?`_DUbC z9I2uFc7CjnKOg>2yGv&Kr$96sa&L8bIuG5dc9ii*LQdy1N$H&ugZ~Ihjx(^0Wmsnr zo>pOII)u6}MWoB&1jrk_P7g%_MYR_y27f0-FheV$6(8jyI={Eyu0Ynu&=CnPvnnwrVT;%&g^ln{8vKKVdm9buOBQ zDm;6%g+RB-`wCjWQ`8cZFe}-Ls}t(WfJ_&CYF%R1?w3L+eu|!ky^MjJOCb_^_aEdU z9&Vliklg3$9VcAvsG}}qYyJCyFmu$S3Y0JfVNVHXlE))OC$_4OAVxSuJ23Puy3K{l zJay0N4E=r53WJzoiLxV>hTUwtC^Us#xe>{Dn3#Q7x=lDb$j&_GW)pUn#sF6wFcA9OfKF8rU*GF09-pKtbo^%Z zxmNfP7eim&Z2Lio7_vH*Vf4X4pDdv<+*7Gb|0%W8U6&)OCWu0M*`sWZK7SQ!PE&?X z;5SuqH18|^O&+txknQ(G2VpwQTmIQVO0vFvoba-=KkUMM-AhXN?|yJGXYE$&_PpDk@W2WO zN$3{%O&?F93wq6UJ!Q7jPf0oZpyUAKB*ZN(=>-v*Vwl1?k4DwYUkIs>{Mm9eoh}k| za~wqH-Zrt7R?PGf%`T2^MGr&5uFj%gQ5H;x_0go7z-W`t8LmvF(BJ3hpTkE5?y)@chq!GR`|58yad9ALsDvvio~UzTU_`hh#bYI`O{VvM;x{ zo9*lqAH%XM?d(qbdr`jLE*||g3QI_B&Mm~ zcn8b<-a14iGN;wfq#Rj%hZjpH+#+sKfVEs(*Q;w4r|~;lijh>j70cEOPFM+5`8kOI zMePDJe$|lTagB6sl*}NU zhtLPigj)4__+q{MoUj6-4ZzRlF8spjcT{;3Bm=O}35N_Ux@SOu!z?xUMjFDC6Bz0U zEh?WEX*&49ngU<_o+iv%NVk zH?-Xn{YqkKHe>sGm$sEDJcAmu)P?^4_2Gx^cp!KKg4Ctkm|)YFIZvR3e^f{mH<^j-OWNtV z?#>tR?XWMyjZ1bObeY-8JDmB?*FkXeo+k=iTAF6F5WKHOsurH9^s|F5`T3s)Ed2@n zBX`zB4_mTi^{frAg<*oOu&h(G$LR)%76q{N=&=x?)d<*yGa;VwX<7>rNE#*E_UN(A z;wfSj4J>!zn=uL+fRXz_g7;L0-BhcOi`{6m#ZTHXSRA8TpAJA;oV7Fqwn;4MqC!MV zuMh{&9KK2-ZJPIr7RkB5xFOr${bBzGpfY_%&o&-4+1ClR`!Vt1e0A0c?RbkX)0#2t zbDRE{hfQ;anE39}d`Lc9X$w6WhLD~56EY-IovgN75$!yaPzyo*IYLy%#wtGgFgi_n zPLLpOvudZHUwcpZjN#xAM{Fm5zYZy?qz-XV$cOk;AuIyks*Ty1Q;_lJ2)7|ptRaH9 z%Brl`pOAPLTqTROEw|>p|6ep?A%H{HJ5Ch@{i*z;{Q$i~^wP@+dsZpdAR;!EiJM4% zvqpqw*#yE*2{aE!-K??~4DPi&G&;30bhLRQwZefl429cX^`su}jCqf{sZ@^9VXcS1 zbj{#I_hSjYzf4p*v(v0myp1Zwf(HyX5&iGd$X5;$@YTEN(mz_!je#XJ1zEf!D|&m& zBuW)6=#zXaB>iAYvIiCE-T@+;LDL9BB5=hUJbf1_b#XnpYYG8pM@DUYUZTzdPJ_Xi zjM9K&48%%*zqn!VE_9y46HL%W#f+Ky@woiV_sDQtD}-;HHFeY7wJ_v0$l2XyS@m@f`;@ed&H0s!56DrTMdVATa(`%twbB)+ z6S%)*p3cayt=vT*_#)$F@b8v&*n$=m*?{}Q$EX}M-6gLEOovnq708{YN}$=G;|Z!6 zpnb%Tm`Vfu$bkm%h&5w2r><9PQt!77HprHC9ql7I?&;QgUPPDYLYlsPz-fFWc>6$c zjGWpFXI#4fZ>{D%$h5Xfam-)q_od!~029CU^OsI=dB%IkWqW zW%d7P1j(YA+v}T^J-!WDPabQ`72SINF*lu*# z2e`2T&l5;t$#(2gSw}3blKCgMvCYA=&j3V`=4ncW>v*QBC6Lg{PvIX4;&T^>?I-O^ z_?&FYDMh+;y@8SOHaxmvUv`=zSJ1y3lV4^#+3dz5u64ws z9YzM3EE^|Ndnj#RO)(al=ih_GP5OHVElIH%_?(}3&{x)3Mkx_d7iLR5&%j`;G>9?~ z1gmNF{O9~j8iKdbc#!@W2pb)-DZbTLMVGfRwp60<5mTF1r>GunLZEMqqBX^qZd_X- zRE5GkBCdF80~!(K`f+&qfk{;?sJkO$G@8EJQW=nqItV9PVrZoNzFop2wM*7N7pE3S z8}YT+nci7j|6sl(i*Da{KJ0aho5Po_BeWe@?p^5iWzSJ3k-M*%-h~QW>XMNChyY<% z74$aP=R?WTVeQ_sK3X3w628O7A5co!b!&9oepmztJgtKJa5$)R+vR&FccPl!2a~cE zIxxnc+2=K+2h@;5!rIGDi*l9S9y?YLM2ri6oSk#DvxwmUj%wEQN4}5jyJE83HZAfL zf^-);8K;r{gOdS=Kvc~ zWg}p&Id}kO)S;DFO@BR=8aVyewAR3Li(NOvn4oK=W2hKUGLB zQk1u3aR*;#<-l6D+$@CXbcuc6vZ&hsQeAbE>rn9u4%#3@pOW zh8lZ!Yv_9r9)drkBUK~y|9aB)$0zfZ!f`7N+LA8uB!AOHnpe`u$J@{>DebK3-SA?$ zuN*2$0j!89O^%q=j=sXM$bn;}OEF4ml|p5QU>g26$bqWAf-ik(bKq9*Y=5Yu0Sc_f zNXLWg4@-(YY_&u0{%#{=(7R+~OI#A!{`QU&DkyRa0qxAr6jH%{W#JEXRDMlAB$EbN z^mC7@)FZgeOa9NvxSz{VH!{Yn2QT0qC*JjgJ!*!;i}*VND)c0ytd36g&bV4`e6RF3 z^A->ZPjfX`zDjb|1tOb{8l3s3S7|?_pA21#)N2P3YFUT-$Y}!TtPYynNRPg8ZM&)m zqLeU3zW8JOWvPd^-d=h%5xDUnWez$Dbqi>#FRM?au2n&eYrmR&H47uwiaO?bnj*>sWyY~w%a)B0HLxU_QyYa_o?}w~D`QP$LlDwT=6wPJM zyuLRYEbdRI3968U?OhmcfXNb;Cw{(x`*4_Fg4Z+uM);Ja!K}3RVT7>VQ7*1_0ET(i zprK>ine$dVIGD1o@43N^x)Msg#TBT+X6*CUO%&U_Bk+J+hzcYkI&ipZENVNB7m$5} zZ7Z}eG>|8tHR`SEZkQA(kABsK4DQf5#ZY3LEEn7oWt^%#2j+86M?+Pj=A5fLwrj!f zcl$}gT}$sBvPX7hJaLqhvy{Y2>?;>Y{f-oqw5S|fM5L{u-iskrr?LdNapN>+z$!AA z`18Zjmud-G5t<5rmHD^Ianu{y{?t2{q1FQl@}n}%#_B|r$?j1wj7I$y#!MW)3ny)o zXMq&C9Bece2i#@Nv$EW58pJdvR8}ZHc!4?0OBHVUfe3V7pd?o6FhR(5K)2F~vV4MG z<|$S2OoQ1^aHA-OhkCeXM)Me9Zng!;$+I=pLa}=9KJc88EbXvH zw`_u+m_+9nz?$>QBdml~0tHH3ESVqUt1@5JHxOWtlyj}Y0WbqI_O-uW)jnF=Sf}kVymD-4HPUOr%0jFdXz^un29=;}TS(cqSTqKhzIU4ydkB=u?!I8ty>E_WZ4OOuFAH^0>+uu{YBMDKp_sdB}(U^ABwXG!hG zCI1hzRSp?v=_mYhpS=`D-uhvbv%}9iS?*s%{Z9g9|7alxRl3z!(xfuKiu{DhpfO+- z8%d|#R?H*X;o*Qj)h*+D1~iQqZ8F*)8wW`LUa-R=)wk+_VLGATJY70R(Gy|klW)1z zMxvTY44;RGJwkc>=Xi1UTdT*uIKVH+ye>PPur5;vn=k5?*^cX4NC;ON@#Db40S+FQ zMt;?oEPWtgnV6N>0o@NL(y+gWZxggI^l68ZSf+}>r>62{)P&i&UWonU>l02D z%Krpah2db%{Yy~eeL?=wJ7V=6G?!|ItYvoZ$W9y2ir~+UZ^H;T80J02{I(&w$G&R*t;sTB4 zHD=}3L3U<}ITB6VZ*3aEcjBIL%@QzCCl&d(OG1P2J8z{F z-?3d>lzt^$mSwedtLRV=TS)Go@V~#OyC`Ph|S`Yf(#!5-)o(M@{%grGjpU{addt z3}X^<>C|4S><47b*MOHshBA}j!eW3GGKYbGoyE}&qVW8H!umc9$W&H$^WTV1nTDuR z9N#{6rkp7$jI_zjTNIM&vp1>{|8%@t9y8e{3IU~ zju@wBpwc)YY+gwu>Q$AC3V&U9UHP{tyY=FtbW@hVJ(J;EyjqkWm1Hk*vjtSP2gCDO zUJ)C>+1E@N5Cun%^lP?w%_Gsn>ztxJB!Mc{QLYdx`AUv1ik)1(LMsX-2pi3mr z2P4lYv3X0ZfU#}sPYflZ)f~b$OamnYnl+>ckBQ)H0WR2T<}3YS`K-C6T!GbVg^rw> z-Wbb?ZUI(wNrW0F?%egmMpgHxWPCjR*b#^0!U&oAMCCXFblv&!E?SIm-`z6g6v?A=r?nZ+djX#)4)&ThWq24`RdUvBU+ zANZE(2x^}TyKI z6Cc7@AWq35NpS)>+g4D*R!he2-hOqSHji7kC8sh*ANk)qMw4@Ktl^asS)0%Y``Zh4 zEbg${PUc9Z~Q!YXWJUi4n|6KY)_^ z-)zkc%SJ$7yN-J1K!Ry0+JU5+E^Yf8#G#d>Csl__^c_OxgNsx~(>p=#6N3{WqA|rayIpmiYct)xScVi_ z6<5eA4`+sNKR*@JndDV#vU~f<{Tv!vlqMV~7H8q^I((40YY5jFTXp|!W+sdvrE}0b zTHz57jkqjUWqBBZ{vEq=u`9x^iUQvRG`m^!9c(Lq@HDvr=a7@z78Oq{8c>A*W)Bj| zL8Wk&hRvCAuVz*^a#GyK3pkE0$Vc9aM%XUWYjqED#m5D%T6AQT^R=h9*n%eNg$$e_ zim7zjT&1yg@Ekl_qt=Lf4QJ<@Q_*TAK=?jcjidx~)yhp#lRuChgB)&8y#SNk_DJqlV zvrMn@RZa#wx7%u8BMld&kY`Up?Hh9Cw$mnp#9SD6%^Pxx}Rnfm?=<+ZJ1V~*eWGeR5N26WctAr&bjx{h zCp*gBw1hM$lc`=A`0`E2q0FOW5TKy#|kHfOo>(RqbFf&d2))TAVY3atx~Ty@os6i@WK75(qR+0jHO2rZKvMov>+=| z*KRuiA%!Ad?SJ@qgcF83WELx-!*e8OA3FpjBC!+iM`)`1LfgVCSl$zueX+k!2N&L( zL8m(*6i_h4RQk96W#jR^)k%HlzfO@JW*vgz@YS5oITntz(B*pI9cnpmF$YiU;djfa z-fm6k9wxE10SCcmE~NWI&Wvpe;%)%|KJOEz9H>g#l41W2*6SAFS`9Gg-z;X3+h7Ah zKHc+J4!sCG3$S7eDR<@6`ZXi3+d2snJhQ!I#4Xq93H0x;7+u~uwaq3v{$KTq;*-}M z8-B*|fKpQ%aN)lGaRx}Kf0+Dpts&>har`q!HcS@zu>>3)%X1|?$vnY{5e6UC4IcdE zqe`LJj;@a0q#hiMR_DWxI1VwA<)DKH+E3CwFWa7k!Ox+!9Y@GJIbk%+dT zsvyWV&K*ceX0jcOqjhFKW*gl~R^q*7QgrXCvdh-8;HHGK0T@P0XYC9BRO-U>Uub?5 zskaZ&reRavxg$G>p70u|+IpI=mV+erIzW;rD$(Hso(ObK-WA1&YKmE%eSj(`0avq> zY!q#*nwe1!YvW-PKE>I2hNNFRIEw|*7XIY0>Cp4@Q+tO9`1E0wUy&dh3#buYpPjcI z9#e3-$clyrHS#^Cg_@Loa%zw|nBBGVORAIl^xkEaA0rJEGnBsJ{=?s@swbz?(@8s- zP*CLq-nwKRcD%9p2<&o=!#3t*B@nHCw1D4erLtuvJSBBTv-`CN$_T(`?XlI<$f$(k zWQUYR4li$R)pnhd1-nb;h)yL98%Y9_#;{u(3^YG6b0B7{TqEHUIh_}=bACnNIw@gW>(K!D5(9T%NMkin$U0AITEwLEObji`n65Jr0j65DaVf7@hIiR64v|7Wbg=Kkx2-?cYGo)2d+uKh7k;? zmTpmlTWH3T(#`ojT@K6;TkwG##_{doUAiNkyNIryJnxl=PGX4&mC64e&Bqn|dezGI z#=2-|$uDv;BUGBBI2rOtdZ^&aHXdjLHcBYPUP(D)JCQ52ZBh7Wf(D;`obYl?i z$O;cNx<2KGimEo46czkT4I>G}qUeI%p{VydTmNME_453*Q7ChBm!g+A@V>~4UVAC1 zk4wiWtkO_7dUE~Vq57sF=8g>9PeTFE&?(4xbUJ4DGH7^jP4#e}Q@frN3QF@8yeI8L zH%^`luQSnMP72yR1HA;7gi%vwgfbm2N$YlYet17~n}*buNmkC>A*9~Leo@{t&OjE> z*fWm%iRhWhPO1a?iTr8@A}o`z8wprpf3fqHq>{vWnn=aOV(YnM;cjSJdUjg%lxV1ONT=$BGb8lorQOp{2)0LWvwVoz znfx$ye7-+Ow@u4E_pkNPxk=Kvm@9$3147O_Smj-8EJX_9jUUV5rwuL+U^G>G`87rq z-P(x-zJ%~|(3hGQ!?{&*_W>4S=GwE3`^IER9>pd7%d}hUdksBji(#MDfwHPtkIO(_ zj1TG&=60K5P>uyA>U|W)!TX||8n@IME25s$N_uR|vzDBM9D8sX4jQog@GOx9gRCpLhv-Px} zg?>nGmMrdXsn*#tdwfj|mcNra!6#In@Xp-yn2yQrTquSjQ#B)Uj_}BmlZm>v{G8}yGrN3to|BlY|2+9i=~EK-e|}|@ zM&|&o)|gMoULE!L6{snmJO6x8oTS1nQkJhywO!Mag(a6<@%g3xI&$ih>IC9`#;G$* z`ILRdy`yp~L|5VfHvJc0ObGVjlSgz_zMG{SDcn4RUWOtv&=yA1O;xV$SGdheJRn>l zxmzk8%S5);5Gnn)OVA`E5g&x)Qu3G|DwnOMwuE3GSoDTq@PJ$Ph7lHT3NQ~jKo$WO zV(_(rkyzy_$-SNi$IcPY`1A<;#{B2nGjs~Hr<)UIJ;x|BM+uKi68KBg z$1~JIy|po#)-AMCp@og^#+HjB5RT^-F=LU1-PReXh?vRWP0os6>!SBJQmtFL&Mx52 z`2@@7Mj>E8_R8^62N(U-J~h21LKNwzVA{wHY7~xLk4X5{<9Kp^-4N%{Qop*qe;X5M zJ^I11Qa#cgjXa7ev`UsgUjGx(viXM{2W8Q8Z*WhJKOYVT^q1_2ckx&~`dBUa_0?!Q zB?y3m>3AZbpQXhV##-&mPm_)QEvogKb}!xm70SrUf2?rRGVQFnFZ&V!!u>iG@m43yis(q#dVapZ5AV%ULz4qeJ|J^e-Mj`uPUD=9ZRvEE_>GQL;}4_c^ZeSGlZW{Bz%>>cND9-b zOu%!x++HH|{dWvhM<0*s4Ip3CX#gGCATi4=#K|Z^q;0~m-Waq(V-OC&2FD~qpG4li zMgB`|q6$oe)EzZUo1L2hBG`Iyefi{PdCHxNk{y#IflZ)I-8d6$61dcI{XR`SFDRrC z)?mbx>(>Pv@A-=vubNCwVyqCmja~7Z0L7B7_W>K1{Ve z)pg^BxJq5#$=j=PF8Wc-ZNDmzFqkffevV z8TB@7Cng8F*r%m2LT`v`hfXgnSKbbcB~j$`nOf!B!DxS?R_rcqS#~D(ap)cXG_rq& zmn1Tbc3oxIM)G7DmqGQCT!|yOYZTK~0I@GQE2vM@T9nxEf6hnHe7?Stt5XtIxJiyl zb6MqEaZcypv|?*`AWOX=M~7eH_I&C-wXWrBlwlL^u7&IUy_?PH>a=tj<>Br`cmp$n6

AWw2v2lDE;Yqj3i=$Q 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 Vs6*`iC&vA!je7Kl6l+?k|Jm<+S&RSx diff --git a/server-console/resources/console-beta.ico b/server-console/resources/console-beta.ico index 63a3eff482314acccdd23559aeed281d089f434d..22cd370d7218e879fc52c5a5d9f5405722a3dfb8 100644 GIT binary patch literal 17622 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⪙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 VQ67`a8L8g~Rfat-P&9k{e*pvv$*uqZ diff --git a/server-console/resources/console-notification.png b/server-console/resources/console-notification.png index e8991cd773a4a24bcd11bba2ccd5e51d66edcb8e..80fc9dd3a96d244890df5c7a0ebc9837da916ad2 100644 GIT binary patch literal 138846 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�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


V@|U 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%0ARUK?2wY$>=Jxrx4*HWt6b8v5WfuHW$ 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 diff --git a/server-console/resources/console-tray-osx-stopped.png b/server-console/resources/console-tray-osx-stopped.png index 82fcf76d5cbb45a468fb2b908e0aca0275cd4fb5..e8df123f2001aa976ae78db1804ff1a588c83819 100644 GIT binary patch delta 908 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 T|r-bt?D diff --git a/server-console/resources/console-tray-osx-stopped@2x.png b/server-console/resources/console-tray-osx-stopped@2x.png index 535e6b8135e52b6a3042b440ba61d420c511e16e..3671365aa17753664dd26607693d9aca703775ad 100644 GIT binary patch delta 1855 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 diff --git a/server-console/resources/console-tray-osx-stopping.png b/server-console/resources/console-tray-osx-stopping.png index c99313d00b425266cc911d606f09c84f9045e0ca..fe8a1932bd38788c36e0361d72720a75e954ebe6 100644 GIT binary patch delta 915 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 Bo=pG% diff --git a/server-console/resources/console-tray-osx@2x.png b/server-console/resources/console-tray-osx@2x.png index 86d9eacea24b2ec22d058e64fa0523a3ef803d22..f8636fdd29adc3fec9877c678fd8693184b63344 100644 GIT binary patch delta 1777 zcmV4iP)pEi6n`;Fs#PKcvT7-GKm7mC znRE8+-QBh^PBNXj=WBjD=i{E+NdALFnL67~l3)dSAj-?J zC)S#=t4dWMz^s7T1x=fRKs*esQ}=9x+Ta0qt{bbno5b}e3MVpK>4kY;8ZG-V0` z;eZ&dHcVhc5a$Org*MxkF00H`8IWBwvJ+YX!}L2CTB8`;`7U@FTu`2bLZ%3{bH(EF zHRXY#{YCm+(28j?FgaBPFc7uW1sz{GeO;Z8b0=Hz+aB3j4a41JyCu`o=7n#_G z3@|+Oc+Pk^kB(pcB{HKCdbQP7q^KZc*3KXk#0otaDOq-&ORen4r^22x9 z-U3+53|YSsu(M(WZS^m~q-vn8U+buWblzj@IB-e>m}h9!?DUjCJWSH&q?JHT3|;|+ zft`N{^ZxBw9a&{Aw!mFCnn6m6L8oCywSOgEpF_W6#~!n7szPa&;5WqpNhhxj$!X*B zoBcYv3Jo@SKkIrsvfiRt63MOhEYivA74Z>q2=H zi<`TSAe^>III9-mFb(Ab`t%;KZM-@N^_`kb0U~QaLNEq!zG{T}uA>@7rM^yN>3{vU zJqPc25M_zC;J&>$%PuB@YkLnx-%eYWQ#R;jhtVv{@&vv=l<46DvRzDxfT%2 z;@QMHy9kiaKGL8;a1R!$ts7*923%kh-1#nJY^XMmEBm{LHJZvbSBX5?X6p~)Zg~N( z1t$kS5xKr5|0YIi~x}fgafT~X&!Ibp?DwN4MDCgl^VtwXg zWaW~`5!?#0I8Y6Usu_bmKzzA^Av>8DhN2PkF2j`UZ~;y5FjG2+vn<=45r4T18_Ls< z+4_sPR(!D^*?G@Cy9^jV$cTfX&nbiK;2#5o!fpWYQ>6qohGx%Uv3|*(C7F7g$jlkG z{(W44&)}xu?nNfJY7H11z0ys`0QGH-Mgj417<4Qpa1Rc<0=8->3!g$gg5+_Jq7Bu+ zpr40RpD%UDmJLG@N)(8K27m9M!{IPXN#7ipoKEeA;^CJ$ycVY092ciZ*22O36&tT4~KL!juS$_f;+yhEd0Yu?P z9D-~!pDO5#ug$VMa1yF25Uht`8K(@ES%eT~HDJun3Z*I#g&%PUv=abn2jO9=K$%}2 z_@Q-Rx@I^{%afULQWJ=>qN6w+!MhM>?nI&da{$9(MQVKr&zUXI?SMg#+A=PXlXdfp^$6a9Aj=V?9k!9dJPdt=3ZRDZ zj5D1laIt&C(Es!gt7@`wPN5+#M6(dQ6~UVkJgrlhMcE)g29Sq-zMHhm1V!Xut4H{q TpVT6S00000NkvXXu0mjfvsp9w literal 5135 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 diff --git a/server-console/resources/console-tray-stopped.ico b/server-console/resources/console-tray-stopped.ico index 2f0251a185890b6d31c4069bc9aa9c52e64218d9..d1f48a8862f063dacfeb09c119c776ae73c3ce74 100644 GIT binary patch literal 4286 zcmbW52~bt%8HWGUTSJAQ##E6T5#vIP7#C19vZ~-NO0)ur2(HKyTmW$cL?IF&iECUS zN?f8XN!2*+xucV@X>F6*c4Dn))VAZOb%8D_>XoPSo&R1gP{w5X&m5RJaL@OiZ+X5K zlrof|x^`9aRqbo1R7a&$FQrshrBsB{_s!EzsW02;>xUk~(-ol^7J?UeG9=SV;NoEV zEla^ax0GJ_74%$PLARn(x)i74Qxd{UrB128t7cYjZT|thd+1iJEfq7>l=rL7V|({tQS+_(}+np&x9lxHxowB zhNxtk>R1E=7sG%hu3Yq71uwtD<`<6B#;9v4w)39kp>6XVkQn2`w8=%pPrXTOd_7a% zf|vw|PITy)qjd~Rg|N3_sN^CO0&<|Qi$1x8wZ4X->RXEIy!Tl5 zq&{Rsx|23Cjg-+hNgfMx#>1>=NSXxG8tZrqrlR@k@)*6oGDN_Znr_r;)Wvp1)= zJ4Y*JcgAYz`$at$N|6<&$czYO(XjK(A5qWSQIIwYQbxmEhmOYiC@+Uw|9}S%;r>JT z_B)7M?yAS2EKYQr+r)?}~roD8$A?ULjN+hMCJDYMx8Ope)U*KDp*x$ZQH99E|ehz1~*J{HrPL1I2w| zO+QR6s{$c^kV8i>ED495`Ed7!D|X!j$ej;!rbAT~+_?)MRKWOTJsZL+nNLSgnzJc< z(2S}!S-r7G2^+t&cNJgSdjsLy{hwa z>Q^u`6UNNe8iWzTOW~C8L3k~k6ju9`1hdsQl`SvBhuvUf4_NO9YkR?ay&XCvAAztd z74BVk#eVz?XWi&mPSB!B~mKE>PhQ z-)wO{S)a>a!P<$sH*-RuC=UL7w(0L2Jqii4U}9pkURb2}rmjOd2R%wT;0d3#fvR?} zuRVP7Q>|l%6{^DF-;Lh=$wN3^2=5Mtm4h@dmXCl>%iwXHOG9l9WM#q|(_n(L4yleh zIA+p6w}c~ZsT}?Z9BK^*pNC&Mb-W0BI>Na!*E8i@{~C5qhIe0s!U1|lg%j&$z?DBX z{oR8HU}`)}k~+-Pbqc@PgHKI)_;gcBA!$6LV>H?8Bq^YB?)IOqre`J3yR^6qEX z!sY-yAHoY^R$dSkM8b)Rra8EK7gCZjcew0La~>LUU?(sq7@J|mW>oXVkKm*QjBe*j1AZf%u95f_%YaCg4*A^p7rz*T-Xk~d&5>=%o!C<2shv9uen_q1z&v%_Q$Tz zUAqeN=4k&Q9!7kWkIkrW&>?w{dK`NW4!OgAPxwW9Jr^>Y!Utica8h=L>`>ViG7qx5#XqEs z(Y`^vocKxcw9!dn;_VwBY=%2FBMqBzvq^l>AbolCIo*>o7c!f|OyRcFL0E0(ps(&l z+1=tF#KVY>5-%tINj&Y(OkeHZIJWa(GrX`FMc9nn|D!>AQszQtQ#d7z5>Cp_kQ_)a zHqL=~n9K-FFDHIdJgxZZxL7Y|yp|3&!^fdP^5Ck4S%+4d55g$nq?rRBM-Kd4^C%uh ze3W>(`H}UerxjnF7~|7Y%;v|D2dRbhgPu!g9fVQBNizo>^v;qTG|Ym7N#frsP04DXf-#A$=fwQ)WT@gLoL>f$qZ^)6-@~gpm=|V!glb z)VpR=_#lj`Hd!tELUxwy%_e>5XE(jvn*JM1PrGcWmF%$Z3-iq5;Dc~NSY_p;C72^_ zDdygk-7Wq>JdF4#@p9rPi~D&}7+|R{82HR*%VDKqK`Fzol&Vuo)heZ~DWy(3u9fod hga7l$XHP3-k?WdLZna9aty9X^u2i`BN61Qp{{m literal 5430 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 diff --git a/server-console/resources/console-tray-win-stopped.png b/server-console/resources/console-tray-win-stopped.png index cedc6e02e104415a51746a9ee1c9753ee8e2cc60..07db771652ee1342e5e88274b83e96d44cee9160 100644 GIT binary patch delta 813 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 diff --git a/server-console/resources/console-tray-win-stopped@2x.png b/server-console/resources/console-tray-win-stopped@2x.png index b176209758c0b29631fd03e0a4ccdd4999e4f82b..81f4fd4f10792a19e3fdbd3a2fd2edf6b5d90335 100644 GIT binary patch delta 1903 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 OEFLaijB4lbw0{5sy)Kae diff --git a/server-console/resources/console-tray-win-stopping.png b/server-console/resources/console-tray-win-stopping.png index ddf60efc8ef39e825f3a769e98e1743a3c84b733..30ab3811583fe6d004a1195e0bb269aebcab8451 100644 GIT binary patch delta 813 zcmV+|1JeB47Q_aSB!2;OQb$4nuFf3k00004XF*Lt006O%3;baP00009a7bBm000ic z000ic0Tn1pfB*mj*-1n}R5(v9lS@xiQ51#0dvD(*s6~-t3Q8rB)JGI!B9-_UIg!LT z&>1GipP*wWj{E^=qKQm&Y8)5`>cAM{qr@0PKm}A(P(-jo+kXqRy{=uo$;vr7_w04n zUVCo`ea_>cu?PvF%L(WYtk zgkHUTNw}c@?SG!mjlg6N#9hv3<8Ql8D=^AKJJ$_&6cGx@$2qvd^_rncJ~4%+5pMtBg}($1<=*cT?KuyA_}`-jBn=jP_C{0!M4s zwK`j=Z1sxp{GC*Mhh7onRh!-NV^1f{OvBgrn+QZxlqR%g}N8is{gr822p zW#Y;GT7N}4{{tr9!r~_dRsIo#eFCYNa@82tVHKr;0R@ans-=_L4$V3mc?9oX>9t~& z7UpORP3nBf57(lZ;fC_{T}lCn6S;Ysj|UPQ`}N1ugQl| z5tO4vf~pLy36Vbp^oslxG^Q2aK-iq00000NkvXXu0mjfgGPL{ literal 2907 zcmcgu4N%l(8V-vT5v}6SN!3aWXAit)v)SG3vXKRWi4>g&WY__m9B)RxX+DU+9Aicn z5;l!ZOai%F+Hwgzw>%@8UY5g!WljtI=vO4UXwFC{B=shSbHtgBKD9 z$4U%K+AS%ASQ5jUkz838Nen9}C{P#Z)Pm&1aFfY|X|$MDi%JZOdJ1`&@}ayZawviY zcxZ_eWlrE>B_ibz@?|rE43*#({b6~}V4G;cjrk}M!_^w4r2bkN+HWW3ORj!!hQ@#k zxB)MFFkFrMZN*$c7CgDaV?z5sKLp@&i#D4dm?&l-H9(K0_w%=JKlO#aNz(UEuj3^UCHF{KoXX6BkYf0RMY6w!J zQE)`kCNLaZ_$X7IiPRAfnF5(&D4F_EV}>SKL2^^F8R6WN6JR3mL|}hQ$t1xgNH&21 zW<)n~-I|n?B?&C&0%pWxPfdia$w>y>WH6vwHQt}D%|=>zk4*72uv*NB&n>Dsjv);( zCZiEI8c~|k5vYmQYf%b!Xi-|H*ReVs!{`ite~UopD|Ar&2b94GG{+1Rf@Dkv+yG1t zR7)EuRDK)1K1vcl?x~dBsc*t4{aP-LlT0uxEhC}7IHiz6nLVCV$-=4 z?*xn)!4T|m#n1xp1(G~mkVr|C8^}QNm=RVI+%P4IE{>*@+A%NB49ee6CRi5WVUj%- zhXE2dqHQBl{3*cyL%bgy(odu8K==QTL&B8(cYu7@4|zH8ZW-ugiZYx2E$U}+&<1vA{CBm%{c$Wf`~I$%4!<20z!A!PkFY|vC$zkZTj#8)59IhxM^P1aW=r(8v$Wq z#YvEM^`)YD`6s7t4KJ^e;Yl~|M`WETUwzKm5$U`$XW{zRzT)3NTE>rZWH3xPUR z(c=Ru3WI<1;?CH++oE|@&ev~buG)9-Xw+Ty{DhG9l#8#$?`|7=Of&1cX^G(7n${55 znmn%};OO<`Z(K;dd1U9_-f5eN$lW?`U#vOg$+-0Zg+({7WG?DP`JGbv=yS5&P$$NR!rAxJA zXRX?J{;7tduc0NSeYKT$8|SWT+Uw0c@g9ye6QR2TikZJ2PwzTa_SKjjf2#O2uQhV! z8fu$r#cES$&}Q6R>fLrV^A8!{*4&bM3bw!Qen+zqJ(m&y9h*^gq`j>BVo6NPn(fcO zdhW7)&dtpAe?Q)KWajCPaN)h<)1N-^S(j;n6R}r5(aM$>`Ykr$pWREqeOi zvI~ESciM8UzL@+j`+4iFkN@0PSGTTmeAC-^Dtp(nWrz3ep8L@&p!n0tqZ?V($8HNd zY1X}xnD2uZ)O^{M*Yi!=mf~fjf`VG7Ke%!9>5KbkPu$mD6m@EL!shffODji}#9foC z(mKN$_FV`~d+>dJP_arCRkKmGJQ}W4bsIO1jsG^d>iVyg-(PEThNUU-r8WNsxWOSz diff --git a/server-console/resources/console-tray-win-stopping@2x.png b/server-console/resources/console-tray-win-stopping@2x.png index 50f9df457f7cfa6e8f1614723a668e2fc9946f91..a72cdc1209dbc539203aa04c40edb8235f0674a6 100644 GIT binary patch delta 1892 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 UDh=sy$v+kc8y9Mk)%Li50354I{{R30 diff --git a/server-console/resources/console-tray-win.png b/server-console/resources/console-tray-win.png index cd8fa1d691d3cb204cbf8b4f6250bed489e9868e..1ed710c880064fe782152e4c30752805e320742a 100644 GIT binary patch delta 774 zcmV+h1Nr>o7M=!>B!2;OQb$4nuFf3k00004XF*Lt006O%3;baP00009a7bBm000ic z000ic0Tn1pfB*mjvq?ljR5(v9lg&>PQ540`%+POwd?+eOQ7ITmQG!GlAc?wSBZ+aL zJ4lHCf$Z7%FPON~oog4aG%h5KMq@&>0*0yqQUn1}DANzx@qc$qo1DDYnRm`R_uM;< z_&KkG`U2vh#|bpvRMBYcP^rYe#F~p0lwqBZ9Vi#^br`BBc=^PU(;$1G3rvD3x2ANc ztQaJx*#r(0K=$JWWupZ>WB(#tQa(~t)rDX;8+iuID$s~qRU82a7xF;UQGFi=BiuX- zW_aJ_@!SN=_J3r|)pRPR?xBR-GdzeumO@g=y^nj^^ zr{wJpIge7(-IG!~q=*TC6L`GUFFlx$#s=ghq$KvIqP|kD1!grDi*n0FX$bi{XQfmK zfszzOAPM7U8V6Xb7Npv~+)zpBa8cJ?OWOhyFBUeWrGG!tK&y1EO-f)tek5H+u=ljI zz9#)x!Y^lyLy)7cwaU_t9!mKw>Ek-VQP_>7bc(a>?8o{bP{y}KX?vAD&Jb`|Q?B*d zT4k&ES9-UMi(k?R0%P=MkUTD(lUBb=+4r>UAEi-h6j+JoAZLB1$2Kt9&Qr4n}5>EXKD8*B>z|-R8)YAoXcR?g!z;qgCJzFYUQNQOD#Ogyponbu-Q8%6Q06l z`OHDa9K3~?1+}`!0XLf6tQ6D;lk^ue(k7x295x)(n2#*ooA-LJ&J{@0p{7AzoS?Uk zhe&ysdO7UlWc?Gj?@%}YfmvVkYI@8FyzwqxnSVPXj1Ax-asjk(i&Ob6ZG6Se7o2Qk zncI0+YmlEZ^3P4y>mQyI4$Q?0>N}tlfi~{yE>f zAJ|9ZFuHLBdI)LUhQ#`8t+KT1fl)KIb5QW3;9=g;e@#dv)rK{vnE(I)07*qoM6N<$ Ef?DEfTmS$7 literal 2914 zcmcgu4OA4@6&_;65-P?Ri4x;Z2T4Vpotgca-5ppESr9ZUWWlH*F%C0tV3eI1X9id_ zhN4X*SP2kY|FIT4X==nI3KjH-R*4D*@h8RKqlryxi>N^eRZ)6|p9OQYNl$Vz=e%>? zyt(&&@80`;@69`jv!)M!GU!PNf`-S(Ib09~J*ADG`$7<;yWLGg5acJt%~K#qAFK@@ z&$h@c2paZRK6$P>*ZCsFh;BX2im5>FaZ8Z)ghzTLnpp%?I2EMvf*rZJw-$kU){e|E zJ8`EJ4bu6zB{E1_GAo%`vWT&up172tP}(wvz&$4F zB0CbL0m5^giEy+i1DMp~D1+k$*kaQYq{(PDOo0u!0mpCxGvX*=rp!2Hw8DK45&?(H zEJwKi@P@l5-@0xqu>O$_$9f z0)iUcpN*orz(7483HGqN3vfNo5)~~2S_KYT1$IR1Ac~t%oJc0j6k(tU8;YAL9M^Cp z$|FmZS`xp|#wxEP?Hlzn4s~D#8OKdn^tM zWPVWD2BUbl0RM=1-`S+^N7>%$|AbA#wDY%@eAu^n+57J3tz@j$o1P=;2XW8^I8A?E zMgCvf>BAR)s0KCG^dvs$BI;jqIbyY`_gamB2QFqHuy#a7A|pQIHm`-CA+hm}sAOxy zw)a{Sp7|NHQWyBbAM;*tx}c}+g` z&lkk~5?>w4VTR1cf;DuO^hBFH4wm*UnRwL4w>IKz?iF$A{)jE5x)M*&fe_!bK8FuB zqlp*W1KwKU+eTf*t6D?$hW@@i>~hKZjrk{Q-nvfRx;s99SP8TihavLQLw6d%i7{cj z+pmOF$BbTeP4`uCO4-n%@9v(k(>0E4=&rw2QFl*-Xiww$CyGX#ZahGQz3Q3!;Knx@ zd_YppynhvbQroi9zj617bAoP5QR2~rmAn5G*LeBf%I@@=(zs3IbVL60bXD@S>ihP# z8!hbN_mf_ESLk{}{(IRDTkG4{{FdS-NyoHgy|Lg((`0$${z<#S8bV@Lhyl->gUcSw zQdgDlS~|W(F*MvBRi-14IMpX+sM)()bd~Ky?=MYnTxID$Xg53SKaLDSpD3Ju9TPeRUWI)+j!T# zV1_QR%J<;Mu?hQk1qes)#9)p7xUOKG8TLQ5ZqQn)!jaQZNQM{tGs>4kz3C$7EMR8tvM6;qlw z{Nv|~N6nY>cMzA>hg}wRx#84U`OU=gISRWF({p>;#thn0)BHg7f`gG0^DUs|8d>X^STcWd&(!u3Ug z^=qnk)}C1x>DhJtdgAPtVsq!bUAMlYDrrJ;fxr90*_6)m1@YE_9IORWuO$T!RO zWX7$Xe)G@eH8(DAYHPW=B}BIj|CM#mvJZ00m(}G7i)+3J3b}tJcdWI;Q8XrVWNE|7 zCZEC2ui diff --git a/server-console/resources/console-tray-win@2x.png b/server-console/resources/console-tray-win@2x.png index 142498f6a13278e26a1145b85e9de97ab139e9c7..abe7bb0b931b7b9320e93f3d8f1feb7d701e7c05 100644 GIT binary patch delta 1790 zcmVj(APr395a*!xLCXLM zXe}DF7Q~!JTz~hWkH@DO_Y09L;(E{o)`0SeWTZ1hoKKpM(Y9W&5A3F`?ZA#`fH?~6 zfdU|}#H|CH!2-3(NWaqUNSugq1dI{bL8f*V4cp$YKZ&mUsbVV-0C^Q|6Hw&S)db8% zKU^q)I>@zo(&V$i_bh#H(6^ayyS~~JUDABP@+!nfE`RckK+my2MbG-XC6IUTzAd~* zp)CR0B77x%HiAuWz3n(+iv{>KSK1Z%RJ8?jlX>zykdg4M06Fql2$;&4Ccdp(zt(X% za{{7o+*VV;Y0Z`P*y6&2tbklZ{@rVQqz$zsxQrvM>ko z<$sju6gFp)T$o&Bwixo+hzxf7w%O4mj;s*FRs&acihp&GrQ?&$ix7G#nlCA!U=tx( zG0Uu)0Gl3EJLuvMBn#!u1`vUIDs_nbrMkRh*iY_K?KkHe>dw!NU&Nm z@EoaD;fPq6L`G_#Uv*}^{_Vl0_c5E2lwrRjq>quYOe$;bDc#{%cU_}$ z2HyK<4rCb1J12#d_q&pnXktPsg0rDcli_8hqyS%QSHNj|H=4 zunY3MYk7eHnXb-Ex{kq{nRG$C6duWEMXL9LO!$6&&3A&m$;g8}P=IXxo7qw_P!B;9 zldfUH@<5#QF|pbLId_1#7pU5IgSN2dV{KdkGF_dEGSLiDxsZt)A!%T8-JsHr(32*7 zhHsr@td-%~=h|wn+Q+kp3XpACmDO%YgHi~}5L1nqIxnQc7h@0aT{_!2UOS1LePKkL g&1`cQ@A1s+Kd1|mvbDnj*8l(j07*qoM6N<$f-U@LVgLXD literal 4628 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 literal 5158 zcmeHLX>?Ro68@4v0t3jRfFq7XL?j@~0m;Vh2r9b*f;ylA;&N0rK@fomh_WQh$(*eP7kBx>dIU zKlr0fOTZ7om>K|d0}vcs_j!LCV0i%09Y7lZ52Eh-dy%T$fKCg4&d@X?4uOqT)*_HI zG?6v%&y2g%8WDLl{d2UGB}iNgJ!i;}@7Aka!a#i-n)oc#uN_ZBF^<~m!xh;VJcf!i zQZmn5Q%)Z?e#4fPEt%53XwCHghU{e@IAw-ZE}=`-X7~vkMDzlAJnJ)ej2@o_2GFIWj|Y<N~T%Y-ZBn(E+VhrfKX-W(xru^1-Xvv z``@jSB@B}#G?N(;(ssV;Sg~Yo!IQJ&OK^;+wQO|2>7ajPoi~N`?yrPJM0$15zzAjU zs#nU*B{wMd+YiTZ20za5h|G{>xO~{XD?zVfHBq1G(S|NZuhjU}I_VMlk{bHl$h?Ti z2xZ|by$aGb{;ragqu-Ioy;Q_7b0hp^h9R=Ht@&WwNed_Tu8%g%{Ta+I1TcZ!?y^Pek7J#k&E090FyAIafAJrkP_(DR#w{ij?Hz#{A4{ z7CBS4E;5vR4xEpt+=KJWTsHF_BAP4q-Y3=H1A2y*GQ&ol)HOpVwaMTTGIW|c<=Ws( znKiq{wSOOa2JmmZ)+dEAfG*bSOQ0?WL3d~@g1CgHdM*4jqkSuYnjj!Q0EiOV^2U)?j}Sy5NP0EYdEy86G|7O~@n+YrFDXu%mCk{P;jh8}wDAFFtdGjx|39?>(j zN#B5`hGn;H-;1Q~f}dVO3ohXanPIog@Nb#n%%9MoWri=gg#LO7ZL>Ba;9hWr$h&|W zThLV2;$fL#wah?&Rk?&koFODlLUY^x-^$#(B{$Z4w%^AYhRO`L1oqWkkJE)iz39@` z2b>qzH@E%1HnUw?A7m3}M?L53ItgQBEjq|rG|3rwH=a+3s2vfF^|)Q{xa^jVwPiQ2 zROenHq1VlsltjstoOQ&sW7B%WNAFF|e{Fm(<=6W9gkH+qlX@s8=1-~e#Y`t5j!Wpv zCA6scofr_&N+PPI2Jw)?TtU{#Vyd(m$xiNuUwmRT);PE>UHy9B-jWI9N97G05~c|K zV&t?U`=DfZ-m3R~`&O#cV4^IclN^VpmD_zD*9j55S#R?zXRUE?#-rb;2kTrk`CGES zbjXJ<^59!8Av8ma`}CXP-$mJk%x+p8@ zoN4j2?l*Okzem{P3`v|}h&~SOu0`LjM61U%lKWV|Bf>cvCr_|IF~@<>q*Esi^R#<;2>N#(JABQIE1Xo3v@UiJl z=XdlB-JoEyn_7F~Rt_i@F-b^BD0MoW9*bFZsiw9u@ed zSC16>ln}yS-nDFE7MvOl*w7Y&N?bwMJ^-AYmPs&_@@Czlkj14ENb;N{?pkoZ#h{w5FB% z&g2kf#P9)%m_<4t_(ps8+a9mkqZ1Fxk zB2xKi(T4?AtJQ5+D=1@gxWFjp62{969R+fO<9s+;ti2lmu zvp-ggeJ(t+Rd9&cvpRgPL2FsUD4D?~I4Gy$Twg5zpkT!C(7O1q;3~c$!YQIQXR912 zB!X3NuuCD^jhWPqj{_(YBHk+J_7tJqtYz9}c zk_elKLKYtJ#=7%SuHqIE?1F=ZIuvJEL&uNt)KF4G$>q|@N7S2|Kd)SKASoTORSZKXb}UC+ucd{FXYT>_~|#IC1>a( z?g--ftUYhIE6a+l2}g)9jR^CILZ;uw_i{MKRg@9IDLB+pr|e7Su)#x=h{#B9{VsSp zBtKo_?-usBgbQ54FiS<@IPWG9^{C|ted_VdpR8ED$0rAaudi*o#kKD!2`n-aef_-YOmJYa_A(yCGLc7r{mLld~xk< zkh0zI%VKEGCGYH*B-W*A0$gv5O*bK&2xEw@anV{_p4{AA^WJ^?N+(TzDPM31KEYK~ z62UDvn5ZXDR#(sL>OITreLu`4gxl51$@O!_Hx0n`avFe`6S;(TGQ$hLdfYQFkHPYy3@J)n2`}Z=v5-~ch1l=bQJSVPRg&*?v`W* zq-nkN_z#(3oxuOA$|XeU7Hq)$ diff --git a/server-console/resources/console.icns b/server-console/resources/console.icns index 1fe162f88eb5f4b4bfbdbbabfc3910ec9a3adb40..4e4df39d692cc2d070bb461def7658471c995643 100644 GIT binary patch literal 209502 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%0AE=ieA)qk%p<;ng;|BL!6@ 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 Vl(SOKxJ!AD%#qrNJ}0=3|Jj|JH}wDj literal 72980 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 literal 98024 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 z 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 CG$6JB From c55f365af4155f7d1cfb668c683535b48c10d2f5 Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Sun, 7 Jun 2020 20:47:53 -0400 Subject: [PATCH 150/160] Fix tablet login dialog logo size. --- interface/resources/qml/dialogs/TabletLoginDialog.qml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/interface/resources/qml/dialogs/TabletLoginDialog.qml b/interface/resources/qml/dialogs/TabletLoginDialog.qml index 8feeb94462..533fd1197c 100644 --- a/interface/resources/qml/dialogs/TabletLoginDialog.qml +++ b/interface/resources/qml/dialogs/TabletLoginDialog.qml @@ -129,6 +129,8 @@ FocusScope { Image { id: banner anchors.centerIn: parent + sourceSize.width: 400 + sourceSize.height: 73 source: "../../images/vircadia-logo.svg" horizontalAlignment: Image.AlignHCenter } From a75c43e0733df15fbf5b5205ef59865279165eef Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Mon, 8 Jun 2020 23:39:23 -0400 Subject: [PATCH 151/160] Update login overlay to Vircadia. --- interface/resources/qml/OverlayLoginDialog.qml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/interface/resources/qml/OverlayLoginDialog.qml b/interface/resources/qml/OverlayLoginDialog.qml index 0ad2c57e5f..466585f045 100644 --- a/interface/resources/qml/OverlayLoginDialog.qml +++ b/interface/resources/qml/OverlayLoginDialog.qml @@ -81,7 +81,9 @@ FocusScope { Image { id: banner anchors.centerIn: parent - source: "../images/high-fidelity-banner.svg" + sourceSize.width: 500 + sourceSize.height: 91 + source: "../images/vircadia-logo.svg" horizontalAlignment: Image.AlignHCenter } } From 6e7b3a387d91c5d4c7383b1d345ee4ac36f3e5c7 Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Wed, 10 Jun 2020 02:54:42 -0400 Subject: [PATCH 152/160] Remove old goto, update community-apps beta link. --- scripts/defaultScripts.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/scripts/defaultScripts.js b/scripts/defaultScripts.js index 1eac2ae0aa..5e7e120bf3 100644 --- a/scripts/defaultScripts.js +++ b/scripts/defaultScripts.js @@ -23,7 +23,6 @@ var DEFAULT_SCRIPTS_COMBINED = [ "system/pal.js", // "system/mod.js", // older UX, if you prefer "system/avatarapp.js", "system/makeUserConnection.js", - "system/tablet-goto.js", "system/marketplaces/marketplaces.js", "system/notifications.js", "system/commerce/wallet.js", @@ -41,7 +40,7 @@ var DEFAULT_SCRIPTS_SEPARATE = [ "system/controllers/controllerScripts.js", "communityModules/notificationCore/notificationCore.js", "simplifiedUI/ui/simplifiedNametag/simplifiedNametag.js", - {"stable": "system/more/app-more.js", "beta": "https://kasenvr.github.io/community-apps/more/app-more.js"}, + {"stable": "system/more/app-more.js", "beta": "https://cdn.vircadia.com/community-apps/more/app-more.js"}, {"stable": "communityScripts/explore/explore.js", "beta": "https://metaverse.vircadia.com/interim/d-goto/app/explore.js"}, {"stable": "communityModules/chat/FloofChat.js", "beta": "https://content.fluffy.ws/scripts/chat/FloofChat.js"} //"system/chat.js" From 05837d178a2cfc2627fc5ece82c00d0eee93baa1 Mon Sep 17 00:00:00 2001 From: Kasen IO Date: Wed, 10 Jun 2020 13:33:33 -0400 Subject: [PATCH 153/160] Update Explore app to latest. --- scripts/communityScripts/explore/explore.html | 30 +++++++++++++++++-- scripts/communityScripts/explore/explore.js | 13 ++++++++ 2 files changed, 40 insertions(+), 3 deletions(-) diff --git a/scripts/communityScripts/explore/explore.html b/scripts/communityScripts/explore/explore.html index affaf0887f..1163d76424 100644 --- a/scripts/communityScripts/explore/explore.html +++ b/scripts/communityScripts/explore/explore.html @@ -73,6 +73,9 @@

Explore

+ + + @@ -85,15 +88,36 @@

AWw2v2lDE;Yqj3i=$Q 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 Vs6*`iC&vA!je7Kl6l+?k|Jm<+S&RSx diff --git a/server-console/resources/console.ico b/server-console/resources/console.ico index 63a3eff482314acccdd23559aeed281d089f434d..34b48a029d00a32c90eed3123209717e31083f12 100644 GIT binary patch literal 23652 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 literal 287934 zcmeEv2bfb;^Y`y2*#<1VOYc|^rFT>;ps0XiK@`E>8`!B*w&s>(m)@nRh}cj>K#H{8 zP42zP7J8Moo9#8pe9zo$C@PAI{(V1po@cn5kbBCUnK^T2=9~iv2toDgfPiLr#sUln zP``fQ^Na}KdkfI4S>W@E>cDMPfsP%^Keq<5n!o^lzg;s65(WV608|Ii41wQW4!CAP zNQr@Ye*!G~=ll#4U{T{>K0F`7ua%`r5Of8#bQy2zGOU-tvBqx_ep!ZYLzpJvDb*H2 zKYn^W{TN-zdm-+KiSX(&NR#oTrXVcX1|n)fM2mc7MLY72yK;_a?xQ1glJ;e!m2TPm zeUTzY=iND=v*-Og@5wp%);oS(#$HWAOXsXW8;Jbh6r4TWS(g#*u$ukDU0;^e^zER# z@4Yu$vDxyrZrfIT?AWog-0!#eO2#brJ47>=5#^9k`N!n|`F)!-3EgxV*-PGNTyU-P z#}dJJn7Z}o>0uoHa?hMI$J_hL4t?xDb^Mrj)BJJ8x(tsdp=+`gCcn>{c<}Q{NjqaA zyu%0G;AyedQ3789b$;%toX#(g%o&qA!MDDwpFcjTQ{J=BJ(qLz$lUrr}o#!6K} zjiVbA9(5&NNAhzm^7{1d?rFBnQG(M%)v`|ds^+?UP0POb-zE;t3$|z2up!w$9Y5mT z_tDFxx{TX38Mo^)O4rz5FErkdc9dY7pDd@!{P5?~H6Pjwg75N^f3sx9Q~8Cb50b8g z+@{N@q03mYZ{-WLX7$Q~7B4zVgoQrpFxj4GIa}th<~iZ({M-{c{BHN2Jv|TJ+0nBr zHr$)(-h8U8DDRJSgrG@iq07iv_WDW^y7*}RoP<2hnOt(@@S(Dlv-$px z`F>iqeLfxd>^+~iq#&7yBq9n8@*(r2F5?MR3Z+d`-(mhO3*wI0dfx3zp7(2tnbPL< zc~-aK+M~x}WyI(*VtlY%&MX_@7^u?f^^#3^aZp2IF1UGxY&<`~!OCp8%F`cLG9H$)M>~E(MK$ z6J=bb$*9TixMu$r6@abN0CxgHG}+)8MVIlNF5~;(LH>{}vEI8(^l37lWgVMlgX!05$UJ+dN@;#(r|kVdjybk5A>+umv9#gPd|G=Z$}hcs zd*0MBEpw(m(JJ>sobgnP+>hRD$#Tc-aBDI;ITeI&oOZqjB8nuU4~eMM?<>nL&Ce_- z$~;C{`Df`Q6;VEwkl*j4yu4iB-i-9p&)0rd_`>r~=k)K}%`@btUY@D?k^KIRxyRjCYm#t_F5|2w2{iV*#A1+(niPHQAAI*c+0&*^&-?Pr zuL}1cI8f&Gdg;J{17(MneON|M&ZXkvACoRsUrwma`km`o z&SUMc!SY;vaQRzG3p}rB5+2fJ6sK6t{#PDs@9Ff}CxxJFvJ~yRsQf+ydwIUye_fe3 zuO^Xp7ai8Nm6ev3_&2ZnxRBrFGBgPfs1mAelp*+i-gmu4dAoHPTe<$FW>()-5 zYnH7kgx5>vlGFZf{rekj?>g|N><15wEt^NfD4klv2sxvF+ph5Rfnr@2Xh%%AchtStdiwO~?rCpdQ;1VUTt_3DJzCerwAcNk>{Y4-BVFXm)tdwf}GKXCc1i(geGgV)=+XLUZp<!Q9pz)rW%uaW!!!8S8$HY4Y+%UpzLn3Wkl$Zcl5?WT zW(flGk|treE~6-Q?#)zIlt-(-KI6s9M3xVV{M~x=@O10d$J6vHM+vgIj$&%$+EE&; zzp_$)TwwZ{YWKFbP z22>f9GzmB9GEQj{=*ZBFZPC=0Q!DtQhu615L(s?!&qXQwVK|s@zoUU$k(3KI^v9 z(o%m;PL3}ZumFQBSqZjeoIA?iUND6{c)lU2;I%UKXRK`J%Kf%{teqa&3JCz@KUg~zYeK$40|b5lTbsK(9oseDwpjNsNgDHMnnFs%Z8BMb1&WY zzYB;6*{EjVA%tO*v4k-L2L6W8RSs->Z8A{6A()Lag5`19Y=`k$um8Wy4!c}PP6X2C zKuEU2tXdJ0DkC&~CPLF^{SMAVXqtjhO+<)8g!#aH2<};zTWbK4V}Z1puxJXZX);=s zuSa_868iogYWy1+z4gEvhTpB`N`z(4C2aJc1CQB0J4`McB6S(p=`xn+G7jl7j{HI7 zcNS?}hJq?C1*Z1D&sK(=tl1H!OK7G^ctMv@#(LyWVwoo4SzSU?S0Y09Ucy%pgcS_{ zhXS*%pr$6FpDsh?dXwiiqt$!vrS;po_&*_e&2IGZ%MqjICphP&QH$#pVFw{WICPl>?57_ky^UTzv0_2 z3Kz_l^T)mPSkCZ4*L!}B58c(l^UVG2JiA_hwj@Y1USH}m+BzkK@3CGi+(cv|q8K77 zBO;&QSDNW9&O2Us=73Rm=9z>3{ZvRlQ32)pi->Jl2EX4=Y&Rt*CzZ^dJ12k8pxZpX zdv`bNg^hPjF7o%@N_%JA8yvUenuI~Bh`M|1Fz*_FzVAfzc%WXdE$47j8%;8I&}4iV zY`Zx7nLm)v`NME zl1wyoHRV0JG*~~=V6i5lgHu7}ZQ^+v5Yc)fpKHI^i`Qn2GzpLDG77o=P17PvABuW4 z7j%q3X;e9H>qRy(+b}(Q_wmHU#N;KXq?Gu)B}6_SQED2|)nI)lqL!OsZX@bzU_mzazRymPMey_>srb(!}Lkz5Ch-kUr?>p{FY~50m zF*Z2=GLMfKe4VG~r1x_{#fA+UnwS2I{&W4&8+sKTqlVh6LLXr%7n% z6cM3Hs8et~Lnfuy%ZoR3CVIOyVc498vL>IMT_0qyt8&(wYIs=Qz1%b>ez>y?Li9qc-bVT{f|fCtWtt z+}B&@vQFvKyPNTT$I%mWv6Tp^z-g5U+W384Fl1YZ993GUf;C->~TIBBTC3<@G;2F&Cc^VH*+B%GX3*AA#}- zbc$-8O7eCddEX`L<~Hye=7Bq}_atxqs+f80==TcOKSvYMl-Eg`j6rOla~t-qe2P{q zwB?_p|FDUG96tp6d*PGmf7?x6JkJkr@7WdK z&|8#wgvtuD%hHz&zlZB~NQls7w9^8%rojWJ^$q?xGo?IkcgMjKauG+wYqrpj^8B41 zdnqTor zXBwo=yM;;$vgyO6iwZj3F(DW45+R-_batL0f1O6XloRR9_8IFspEuBk)r)`8hMv88 zcm@vWY%Zxc@{l>IX zJVV572#pHV&-Cr|_)9sFTDC8+?&CJ(P`ghSoofU8c5mv})$_>R*Ll94RP((4k?~Sd z*6~Tq2c;!>Em;e16=8D7sLDR@a^D&0N^RPkyt(wq2|r;t5uPOqee-<%=h~oW`;fzH z&oY8P`&=7(_3G}q`?ecB(N8ze;dNhtzwr&*as_Ah4dwcYs2kV6c9P-q4N*m0rAc^L zmyyrE|6zKS(hnvq%*OyCUX!+cwZtDC9evJseo-5E-B{j+_Nx~a-qOE|XUx!RJX>Z| zVZS=ppQ}lDP?ONmS61|{!30EX?isMf3PF_(zctUli^|_2<@s@ixPb__67_f?(CAaA zPI6Dx;1jVW2MK7{9wcYKXsan=(QtqB;Zf{VSF)D>!`kP#NnI z242^?+^*8^b|sfQ$YWK&Yui$4R(6_p%<68~U>VCEEzJKZW0|kCXh(U!Q;3MMi zcnB;L>_5?Dd=PBA_{4XFW<*uHpIT^cXsf+@%)JFH6MRipgH!GoIP{W%f7J8 zGNKVDiBL$SXkV3&xrGW&?d57q{XXv=^7~#SqVS6jacM}_G z2{66#t2Lho_BHE?2rbvmydDqoPmqWI$g@O~@T4xIiEAc8Q_af*0sl3^dIKsxfYY;gI0C>g78n%Hh0k0>YsHn#;>=%5`vETqoDf zehQ8ijrt$;Q&hlt&}IWE2@o=7!<;N3BqbJMnuv&01rZr`RLYq3C(({dX$m5A5fNOb zQ%1C|F6IoPXPJ?m@?)gR14T54fKHThjm~_UB(T65j(mRqpViCj0U=b zs`@O1y63_4+3)x^e-9D>q%VMwKGTQ^u+NHp>gr3L&$RoQ=eBS?=|u_AbC23y*%&QQCU~e#PFX zH1ra%GZuozzD^lcbs4RBU8>9Y@o#K#jP z6mK@xM&-0&U&=&XLU&a{eKi5$E;~%C>RnFDjrebPetzyXrFo}@mKEo{RFd;keBtSR zA7$_V@kCboCdx|ROj&6gNzdF(8z_m^(YN$f-eP~;2jg;IdwOX0V?#T69vOVC=aIXA z8y~&rTF(B4qpTi~$i{MMN?YohY~E z|1gx5m6FGk<=dN)R=VN4Z;E6wHgEW_JF^G$?`-&8cU5`J;zi?P+}6>1Drhun(0pH~YH(O8dDFLA-t7 z!0cJGXXhV1ytj<~MCah-Nuv3m5RINkDMO-*SG{fIy`8I5m$6HgFj$k(+99E8vK5w% z~M2@G}Pb5Rtj# zciYeXc;WdjIa%)JKH4{yC{rc!2YdzO_fuA~=6i0`J=w31Xzke<8+M^SMh|L9BIa*kxx^-)0;q9aX+936?0Clh(fMUOadAk#NX`XF!iD_7-S zSU1P%Gzs@}UWU_(>TVlCHk8M_d_JGyz480JKcz3|$-cImH2Gp1=liLVCC?9Un|1H) zHyF7SwT>S3a=ruS1F^3)B2)j(_TTkl-<*#=uG9Sa1(i0FX2tyH%)yig9ZH3?%h8P{tP zYB}u)RqYVc*NnCJeWgF}J0-cNc4)G&{=%{Q?EPAWPu4m%i>UFAdM>?~#0u(Ik4Go~5}ogubO7lupfP^N%fy`}938-z*;k z2Mx?lO4?JxZDGhcw1->?tuE}ty7D~S7OIRYNeaxVGZ9vtbK*(Fc-_?C?~LctvGomoIcPv9BUaJ9XF$i-Tz|}qedV#2!VCIvG}YVr zf%~#=eDR5#NY5T0NTo`&o!Zi;G=LIm42`Gfc0O3r;}UJ>K5!lE-(UCjm*@JBmHIvD zvN_nc6ivcinuJzP8Ih`J#~{y18Fh!{;8PQO(bed5v7P z{pGQnBJP9N$o=7Qh|Eg&aqb$&S3ypyLffbvt)~7v-!AUnx7WFHg5~}E$^QLY`gQee z-nhQV7zFauiR}x6?dM!N&PlqF^XZ&cG|&TiP=;UE;C;nHi{HK`_u2c~8NPC+N09bh zSIuR|yhiMa^X(20;S7<{2jV^yP#`XPqC5_jX7r)uj=3e>`jqEwT`;fx+TUCk$47<^ z>h4K%I}O9iS5`v%KYk(Dhr>GCb|UI?{--7zF_MGl<dBcl=q?Oj!#Ou_387gZT+qGbDZJLr*F^B&N^-ArJ~HkSaSqqi3+LN?tDd1XAKHv~CyynMX|S%E(lIYSA~O2G@i)#%JXjusE4jE2 zP4;|S(zRdTbMFSr_^l_~r(7q;``#Sc%ABrPCMo`Vs{@C;Txi`_1XRg>(Wbch{%ZHl?Gx3 z9LKAD%;J2~or+nZB;K49u?o&E7H` zCNg4x7xv+(%g{>~w)0Ydb9`#RO-r2!3;qexp@*G}Do!gJRMI4^tdFtdmO+?)! z1z}D*%({dsI_FDD#y*XU?ERCwmQg`LzCR{va$di_T?6yitH->UMilHr#Ntd}_wL<2 zU2eN8yZ*NsWjONdedzK#H|wna z1?O9sx5Ytl1@iA}mCwzO^S+lLAGz#}sW|&M6&Dx#=gpm&-@A7=PtB)~d5zfTbRyV^ zA`%1bXPR~$Fz9?AIKQ>*LSEu=xCAft4D4CC{pQZb+ByE&rWfXCaQn~h`{=#-(<{Uo#QRe`_^c`w{*FDO~8iUJPU$@^Wr2_*JNC+Nw`m!ao}7ZlyJ)2zuTD5 zd0KyVx}Pwbi1U5%9#O=ki`&nAFnDQ0Mk$UF8F5&n51g-(^NT)kOqlZ;2Hw)iGwR-J zJo8^`crHF!-Ui-_HB^()zO*27BDbH2I4{=dK=kdvW(g)o0>X{?Ktd1gXa1f&)|TEq zTfZsdyp!i9Qy_Lch6t|^MU4Ap`_GNThV)V#FYkko$DzCr$9Nou8ZvF@%l=(GJlBtV zq?KoPTHPKu03Us>_2^7d~Ga8CeuO`MbnAtjJAP*;$vD-!CmkodD3#x=0RS|WHvyXKkzu!~d{;?OfpW)m0 z0EY}S=c1`HnrSj_)nu%>a16egT)p_(PDi{(?7c4$?j#!UMtO;>7koZCdi1FG^Dn+A zeB+I=xt#BGj+egAD8o-gMxOTt>z`)FRqvC}-;uq3O0|phr6%KJO~L?8M$_W#01^Fa&bDI?gcJoKPSM!U)IpUnQkQWi*auA(X!O8TKUx#vMk4ehYBD6-_r({V z7oI+S+8ean8TfC`h1WE#^z+X@FBI*G`NQ@c|JmAs$H7A{rhUVF9+X#Jw`3k!AN5xL zPiYfTwW;X)|#`RM~*`&_X8sp`+Cb!%Te*LL31 zl6%y_?Y+R!V*I_SJT&>6u!Zv#IImqqbxlHh)?L9Iy1+OH^yaW6LPIk41k~<&*7w*w zS9>14=bCdkYDh=VgmGhXR}kg{ic@rk1c%Zdu~{k%7-*iV5z@P3*?qW2E$4CZbb zBMz+f54AMhz<5yx_IsZL8x;qc*McPf6ZH+ZUe8 zN9D51j(j^~W~S@wM^9{tyE=W@E#Z44n4UYgllSsqPa=dgyP;1bja=w!LHe88&bdfze_gMO zsGT+op&1JyymDDw^Gnz>4M6Q`d zS_IRYN6t0lFTtrrfI1DrzF9D(B*Ky$g)nzK!Zj-*ToNME68{|XyIh7Ek8o!cLLD<< z$*{we91CINqQBJS3iyX0Ft;0V3}ZP!n*cL^o(Ks1_vX$Fe<`>^t7 zwe$TB(!rq5g!A+Y((N1_gLF0EJiR$ji|gTC3w*A~rGN*g0xM`x!2=aMP{9KgJW#;{ z6+BSE0~I__!2=aMP{9KgJW#;{6+BSE0~I__!2=aMP{9KgJW#;{6+BSE0~I__!2=aM zP{9KgJW#;{6+BSE0~I__!2=aMP{9KgJW#;{6+BSE0~I__!2=aMP{9KgJW#;{6+BSE z0~I__!2=aMP{9KgJW#;{|1KW*Ux&(o@DXn*4TnGrA(VI_to;(Ejc>q|%4a34f%$|D z=1ozsIN}hJDk606hX_4jLs;rkg#Wk<;YqU*p)W)wO+@9LlMuOk2CAmSqnbJc)%7^k z*gXR^_r#)B$_&&_5mDP2i#m+ycGTH76Lt0`qK+=3Zn}uN2Sn7}A4Dta?oUA7{c}-w z|C|c^Lo{HTG3}U!<@99QGL2m_>N3rl_B;m87}Rmbp^j5V?bJBbN{U4-9y1<09z!0> zJyEFYo`EWE8I_$2P$_9HBDPBi&-w^qr{*Edy%?c+ix6@o5g{9qGj?1({#It`&m zXCW->V}xbQM1*q@D(zZ?%DW^~NlQSaIvv%Lrl7{o>8QCU4z*I^P+N^fos?MAb&9B` z#TsWaHgJh(=#II zB>|Bsvrr{@4l3_miiksV5OH=D!aR!*nh}lAAEObH5(mrS#V~8jVczor%*<2FTg+ny zua(a`|HthAUk71rQ1*{QNInYF+9;Tu6Jb(6g8A%Hn9oMR{KHIyxMm}CZ!|)We2B0^ zpCUqEfJ(_TQF*r=Rd&asT1qUc@0o_0&Un<)MAT7b)J;o3J*SKYs*HwC1y`xedwiCl zf+o%cG;t)Lsl$$@P8rRTMFX2B+0opYfaZDvnrn>q3j9knD5oXUG?{6upc&Jf(P2Z= z6v?1}lQcUTr`piiWk(~I-MANy^+E$4Lmta?8MS$A)8bLXA)~q@233>e5V^;O%FgA8 zIQTij4=zS{MifGsSGLYXh#Cd+!KE;}SHhe$9_F>tFforYudxnT8aQF2LI?ccfbaky zq&@_JPC!Tr%KjvnzL^b6dIHR4F);I)?#?9$-9Hzh`{y7$c`+h(E=J{ap7X7UOp;N3 zcN}W&i9v0*)v)91rOrZqR{|QQCZdre0Zozv_arb6^8I8jT@qTUR}bxq!6~6hY62SZSh{DTz9yrdE~8GG9kuir)J&d)YAI2ORA-~guH~qdvKSHj zXCs_>#q}XVwl-=jXrkKCjOAVD^W;UeNw=YGnjP(2Hni8QxW*ZaYuzHQ)kIvUTaA0) zJGf$NysuUFt@(}3y4bYuE49T{CBu4mf1C3Mh5bYPmR zBCbo5aIIUyHEso0r`ge-b%km}TbCWJbsJjp81h*1n7a7BSP>1^*r z=%Oj;s@c$0RnSeB(M?y-O|zk!Dx5U&5KZJ_Z(Dl#-eJ< zG}K6%j@o)W>h2YdI|v)4u&t<|g_~`98SPXF?cG*ft6Oos&UZG-=#jczmaMHiQZPHqV|s8(F>j5F?WZSP{cfNcWy zAta(ndIGL;i>RM&L!GpE)Jly(bypm!I&7$-&O;^E0sD9@FbiQ@qY>(qVL31l=DcYz zWm{ol-eVp-elG;($$wM`{==|?=l(4a9H$_x5n=jq3QPy)!p!5dH5wuMY=oYfi?CCP z2v1s!O50|l%B~Mk%^8ate15h|LOsof2C5B>9X2%6ZD{3E&{h|5b*h98P6-`Z=3Rj~ zr>8EVcd8A2+=?OBH#-#!a7wtmvDzBVj!Ps?q-xR(4}CICSwra zomzo^fCe%KG3}U!OiQLI)7GG|ggcn#OnV*!hlE>I1q0kR-0Wr@%=%bH?^HW_I3;vb zt>|o=(=OvWmkn35&&HLAmTDrJxfC=`RnTA`-!(KHwRcQMjpR5~bq0079E9(SMVKoJ zp}S%c@|gt7w{u|GH3cT-J?25?Mdr!>ut@%6a3>(74TM1ZA#DB(rk#($lsXIMjdNky z9)%Eh6himMB5dzmgtHFc8ILNvrlOh}iyBS|we{ieqEe`eeM5Ffh=ztDLv7w5_ z{(yN1&xl2sHUpvQA0WhGgT*x)X68NSLFPr~N#@OeOc4H~ki>KUP6+yG2!%3C`(6&% z{io-{k{*rFj2MLNW7(gBN<4mS^YgsVxgn|z^;8=gCd+8*6wy+b(AF7;YcvVhYYIB0 z+R$B9&|8zx&ne>;r-a*e8H02YgEa;Bx)lslCETw{7_P~9P*=eB)s4^;jL;Q4qAD1v zD;TLscvLM%{#%z|Jo)bmygV8NX?77E6^tyW@gus;p!vf*2D*d?H5tR5JT@YR@mT3H z25TY)x%jSa2{*fJ=<8Mto!-sKYlC=nNR7wUM(oCJ#0;9aZD^RzIv^@w2k=@TDG^mT zU+C;Igk{(e=KcU7SvFYq#=^|J$2`cq$UMos`5zU_e+2sR+}{TR9fa`R8kn|^hw12S zn0Lp+vOfVKd5aNxa0$Yb7a@ZE{Os%F^}f>@kbTXDh8(Zg>}aW3(asT%YaKFf&=qub z+0cvE@T!Dm5E(4XUd z{Q~|LItk(I6qt6~VcxkI7N->i7I0$-wkiv53gXU%Z8=8f)BL{ydpGUS~5*tN`S_yga9fA?H8*u7V(&r zkIh_TtVGPzZLn*0C_I)<39*`p;VuaSTrzIb74&k7Ml9h5mFEF#KnFPOXcF`Xq{X3T z@>EoJ#36F`a#VJ#K=^?eggIv*)Hxj?JFT#!&x5(x3e&zU2&5TT8wq>=TcY`oKq}k) z8iajkArvYwsn5c^KNjYkFJL)nM@Z@ngzcS;FxMhf(iBwL8-;4_c+_-@sGDX(!xS5u zIHkb6&+9+8f*aflx~mfUIwfPRIDqfh)f9aEH{Id)cijzGQLg;^G|*&_#(G@F-MVP_ zZ*Ng0^x-(IgYTiW;@VWjh!3=Ih{jr=L52-=93pBur=glU6IIj|h&ZwU;fEE39h!oW zJPDRFb6|E%hH2G&nD+eufx1?#1Fj_Sf~p%J?C%PJ4ntVG0;b(h!*t3HGuvQWYzR59 z0HHrEMz~`>BKEM~Ry1;ZYGqhaXMX}3XfhhBcC<)S&^ArPwHM01Y7N-=E(Le#65iKk zWM2+HRs81nW$xcbBbSV$x{O!LeL4eG2?Lx8`jqDwaPGi0s)#m85?ZKsGO+_u@56L<4$S!?ENPPvvQI|X;rR%6 z&PS!4(TGf$g6fVa)JnCY9_M{0C8BAn4Xs@gu69be!6l-bOF|!>_jMU}sfrOpdO)>8 z)+Cfw$lH~bw|^l$^PCc<@>nga@DPsWV5$Q6za*n54HgbhpITSQ?i)gq{L>(<2 zwH#5XrpBX+Yd#`QEJXOh`3T)^M@X^=%h^Pj9nZt`@rN+6oyt7Ry!&rg0@q)E{U62} zHER4t$-Zn5_VL`m9|Gk-AQ7fLb79^(6P6SaAsZ!x9$kg7gDVlST||{VAD|lV>u}4c zqbg{iCZb8|Otf^{(O#9%F-11=bbIRxZqZoxbF4_leY%8kx{TC+A+P=$<>!CCO`41! zH4!hV67EwaBX@)II&NVdz;OZIci>Xc&S^u-WGkAm9m#t_cTPi%lqgh9osG(8K1KN1 zPY|XpLTHK=AzR;sWzUl^vweCZ8v>;Tc=xh7{r?F5%y}#iJn+Cj(%SZbaI_7CQw|8; z1uzv(f+=?{%mrV;vR^_-dKAKvmmqx4QdCN_BQiZ6)wNjE)+$~KCGVQO^H{o^eS?*Co8GiFiENb$35nJO?#W@cV&bbKRC?nJ%B4kSfEIa1H%yuf} z1?<+NfY1&Qn5X}Z@Mq-T>-D0vv=mP~@xJ{tP|#eJ&{mH%_K0`ZZ0O}wa0~l;+3%xE7@=|g zo(x5ok$)xms-mp_9bKX+IHSslRway7C5&)M#-4(K#u`x$tOJ}@gzuk)u;fI9d>04Hra3Sld>y7G3j%q8SVO5&4@wG{R--&N@(a5(bU+-8`!shgD#;5?;q7A+~E{4L=*9l(~3u(BHqztBv;7m z|Bk%=O=GpuDd9DT)zASCY7*|zMcn3+j6KHPRS_LsQXn3{d&b-|(I7)ao%Cs_nI4O( z?m4J@b~VEDK0}ye5kh~I5c2gqurSXST4Bm94e&DaH1qbq4gQSW|NNb|-+udwbc>y( z%>)SfO(D=32#XfNbYgs9?$4hAOZp^)rb`HOCUXc&|e;*8GpEBA(JjEOyE8{Y^aeckyaPxmR9a6**+gQYB;m z#z=>Z`!xl3sWJv=Hsg$kE^g5{+o@fWj25m$G&;z8NEOshjz#rd(TH>}L8T)L5q>~M zSn?Ev?uddVcNWY)y#>=EwgJurc$#_p-xd(~xh(&g&l4w3L}X+nESA5v%Bcnj`ziaySQVp9P^Nh1iQry(p_ z1e0eXOnFOT&ie|M^f-j-u?XAqA;N!{i^@BrP*sgV4bIVaNob(i&?ME4R;e=D8)rT6 zSv|6`myhj!-Xs2yCSsIo#f!R(wYmcT|0u8i6Y}t1tHY~FSfR>zM&tQG!h@=ed(^=G z@4hYxT{RIMQ#p@>_l`?;S{uM-8_PktrXdvU4RO(qx3~orKW5X#pD`a{^3@ z7sEu^0p4aF|2NqHKbPgd^0~0E5Qh&R#*`^j{;>Sl02-9VRY!_kqZVt?+qF^d53FHK&SBJp7{%?W5 zBJY=aclPYrf4F;%Io{V8LTNUH=vbK6J_7Ul$*^oy5aL*ZP`0g3e~bv%EL6^jLe=zm z)YN3ub+XTo^E4&2c8bPX9=xxw2gmx2Gous?Rb`AYWM2~A)MQ~xh3x;1Ec`eB->*yf zN)_?4(~41i&VzBjQ+ZARpIz#-2KEQIY-q*jNTepBL8^p0yQiV%t|(MxyEJ7PBGTdz zmKuxDoG)QHy$I$nN5MRAAxvJ*VQmC~dHoLy$lnB)lHtGdz1?pAL#=JV=Xo}SP_zTW z;<+##o&?j`1emu@hUK&Jc;AU72v1vvO1onaxpM|;q{N}lK0E5`324lI8QqF@T0A~DDl=H1g^ z*_D8hJqr<<`w7C*=Obd96;;^ZvMUy~+;-!Bo`%i@G;>+e#>MCLO1P2deoe;B4lC}| zB@ELgJfiY=N|>ZcP_HzfyCj@LUBcyKg}hxPd;cDK2-}>J@RlZGv`aD0b{nb(&K>Q~ zIi#9s>>;~`?;TM^;%!#n1eSpx6M1;9N zMnuX|RCdXTbn*R7>~~R6UzN`7>u;yVqa&XU&*wrL=fX<3N0af87FhE?qshj(9#?dK zAIrX5{3W_XTpr5cIi~{uEDio19a^mO*-jGp+_uM^e72y3yZM}9XFU3K zq0zrU2mDnzztsCDPo6a50lx*!03=-nfs!Fm0fh7qVETS0%qbEq=`un#$000zCc=~E zp^_$}ic3T_zTcJoF6@6%Wi-NrQA!_Ln$nY&r*x-PDP3uGN+E%44J0(nJ-YL%w zykD~#`$ccoWc1Wz+~}5YE$=H&v7?!qh^ta^C>r6NLZf}}({sKz>1E&RG}iYLz2ke1CitGB zslLZ4+BcF!--DFk8%A?|chh3uAX?$OomLg}^Cv93wqX2-#+egFH_e(by4imWn`TWM z)8rgZ8q*|e(i2UxraaLkYw8n?v!*`TIBVKdjk9Jv-6$*inMPSL&t8=k_gup)>G=kk z%1iY#?Jw8Moc(Iuvunmj=JDBHSJD>H6qITT)~GU`<+Y|mx z(B5fBOQ(#+yhoVrQdb;m=n^6wOHs-73BpwcVeY92Jv{-I(^i<7$5$%?c+q0pw%DGxHZq=mnJimbLHrgp7L6?zv zCFg#(1e&w47d=oqmF^)cJw#J!6iuWj={T; zvfg>LMb^8cnrFTLct9^s9@8}IgD0D0O@F#^X7n?SGGm{;Dl7iE250BIRwrxAjL?!R zDgWiXa@Zju)?vkHBPW3K0wvs~2hIxVW!w)V<2pB=7iL9szLPw|in@IE4BM$}ukN0Q zN(W~ld~Y1W4#)`66j(OSgjt;e6A=XZ5yJK+5Lg!eui#R$dnLc$uwlb5y4RNH{;MHm z6NHIx!?fjbn7@vLWs4OddNe|FS0PMag^1mJmgjUM-d97FP)8NfP_v?0s$`t$bB%7p zjc&W)m$^x^8h6GF)nwy*?lGz;ysb;Z&MPMSJkLm=EemSW=+ke~ZDgl=DUOEIbb5rQ z(Bm|oo~F0yMH)-5)2sA0y`N7tn z|02HfVC(bvP;1X?54ZBXJ|ci`jA-c@_ee|6TO(U|-g&gS=e<$QJmW_<^{|aF^~ok# zGoEgo74u9$2P}Q7Mvg-id{&@YwkO&K@vxl*c( zR(#)ZY62SQ)<8TkX$GoporTJdWr)a75SBaxq1z;c99s!9O@ZmtWiS=64rmL3W#JbB z@(;n4l=DlK_3_6aU(}mcfbea72w9&%_;MLcj;S!MjD~sr`>=dH6`{PJ^2~CCt1D1x z5AW}bMs+nFwGBUug2t+Zmh69Vin!j%{umK`H7jn@_-t3s-4Zd%VZ|6t#8O>Cp(Yt; zzmg{YLHwCNpM8BS|5J7kqnmw+bQ8^@JIP8zD25&|biia9P4Ck)^ftXjW9bcgh2Ey; z4IS_SjizWCNg_Q&i8P#M7T)cjG{0NnQ-fP)J$rv!&olS8`%fYF`5X>!<6(SmcpJ|P z547>T@L(Iyix0LjbmFTI1@r;yf;S&+;dy6NbI*j)O+CC$n9l2iry8B*HNmY6?8MjM*&zP7$Lt2@j}}acr z-4uh!?>|H(&IwA5L0HNxgrthF?3fMno{2E6T?$jyY6#!9g3#(B3Hj&XQZjobzdv^D z7~XvI&2yc)t|bKe9>Q6IFyVEWc8-DhI~kTO3PN_wMQGM?gtG5+TMQz0Oh)DH(*imm zIUcok#-Y9zi^f_sS~z0RJ|zYn9Z~4+h{8=Nv3yUQ@L=k!x=*-g*O}qAS4wx!jHI+V zwJB{*T}qqZn9>(Er}Tx*eg~UU+PntFd#ST)kSiga-1bn?MbOGsEva{I6t$yy)R}D5 zi>&{Tz3+gIs@%TcGm}O~dJ*Zpq*q$#y(7IhK@=-UlimZFxp$J#5fHFo!A4O)ksi`! z?o1MTvmlVUlR%P5oAY1i&J0FGMIGDw|Gu@pmFV;3J;|K??X%B0`%p((Lp_LdfyFe0 z7SL##OOt3OO{bUXC3>D-qi1OWO{V1v28L7Gm~?2KCZeGvqK-+28t2)E zVl66|SEAgxjVPV=21;bU4R3Q4ypBi1bH5fIXC^|ka2C`Y1Jnwtmj4h3aA%zV+Rr+6 z?3fb&{Puqw2;3#$qaDDB*}%@%fy1+alqJB$jevZtH*O`)uW<9^(t5Yzm;2v3yE5`l z;+lT9lGl#=J~{fu41=)1Vi4C@4Ek7$F>bp>+OSuaHhpSI-Fn1&{_T_ZuI`V|y1M^b z=A{n`vaWnY_pW|M_pa@ydpEwI`!|m~#yw2;t{+tXds$aMq0GzgQ`V*T$a>)|GXHRt zKBkNG4xOjnWS|{%j<(TB+C*Pc933PbeMnKXn^w|hT0&Y{K+9+z%~p88Y#KxJX&5c1 zA+#!|uYE>bNY0@4^)rU`XexB<=O z@dFqankksTSTJo!V}%7UqqCOiuAI*#BHJL~ zZArvrNr&-90mIFD^fig-D#f6kk@vo9;g`x@Gcl;2rbn%d0;);TsFbn>Pb98J8EFSf zaV;Qi4ZJ^J1+T-e!{e(2k|#*G^oKVbrz`;-9f zSc%N+*hJ-4?E1x-#?AWscQ5Q9DtMoW4iM2XB8n#>6A@h@ zqVI`FCZcR2DxiP(*oi2giYS}%$x1nNhcf9~x=YvSd%8&1D3#8Wkt9l@b99c5(+N62 zN9i3pP_Tiv9-NoA;H9xyuS^?|Ib~!A>(HL9EWO*;vGk6tXX)Fqfu(=vMwWqHn^*>S zZzd1v*-{?btJVMH9oD;*Jgj$1d3f)Z@`yey^bDi}DrZwq;BKL-{}8rV$1foF#_ zR`|e6!yC#oN7Yxffdv!lSQbrwGDAPTmTX>7*KQV7WYW8@zeo~r-l)S;C8rcIhIhO2 zOexO?vbT&RB2W_1A~hC`lJ%&Q5`&rs9jcsJi;D59QSOW$rBgRM>w)Xw{gn=$hvVRJ z_8Djvyae?R%mIR-^8W`ofIDOSSAJF*A`1QC_U+-jckP}{M6pD~@%hf^)-qwUS5lc3{ESel3(7iF1UhgB#1w4QVX1X2=*Yb9_z9(lJdfCp#?5x!XP3 zp1RJ5q!{2fPjs(-LTsmO=f=hfv?%2Gu(ap=$UbOa6P#uf*)1 z{m&W`(QqPKNJP7d=qwR^_qPSvfA|y@6_Hi8*l%3FTx60G3r-zBl7HaSy?J|ftk2a) zFV0>x_xXFzKQlCQ*nsxdE^V7xBEuS3I<;DsQDrALQWa_`Rma-S{%|K8g*K<3-G z*zMQVU%CCe`OE#g`zv_HxbSoj2NpcQf&R_qi31#5VEWKT^7N6l<+;O~%3pO@l3Q5! z3fUW`(v9c4v393icjN(1P2qck4myMO!EC?~t~K)x8HwjjL<_A&qQ#Tv zwWw-Xg-XWNC@;mJ^l3dxUX6qIh1KvrqlL$nP0*xHhvw)D&RReORAGNJ2XJ%zS0z2)%Td9& z5@nU0)VtwxAr{`oweb4-MR=yngN7DBefkrqZ*PEVXH}>w|BV>nruc6}M9&e?9w(Ro zzwEi4_{ z_{yCl1LdwAg5@q9g8re)|J%WG*N(0mBzNl=sNhuh&Ovg|P7W+!9@DQ|fIOg^pFFsy zpFFg;ufhd}_HSgF+TYK5u=9f40{?SFEzCsC%tQ??lfB`2x;1v9L%(-p9$*qxvQboR zbJhaJ^FDa99(_zYbm5&+Tn{t|XmwtX#wjtVCv8B@^cYk<7llg6D^Nah9m;&U8znDn zhIjgMcqcA|=k+*fQa3_=g5YeYZRQNZ4+?%O3m?%&O!6ZGrZ z#4@gTp!`XfdAS8)Cx`-*i2Rd?S{WW-fGzMaU07V#tsKBP-)S(4s@X0MAn6_TKuJKy z)EGpVc&B_cnj3UzD8-?+q(hBV0acP$p+fv3lsmNnrBb({#NA!+HtXSeJPIEB*25$9 z1*pG%7pnWL1$Kt2>%Tkx%Q4t|!maYIbb>+@#a zpE7AoR*!BStigfJEkOazEa9Pka=SJ`a%8*EzvXslA1Zff=e+HM<&IA5VO(Ht(yc>~ z+`Utv+_Q6#!Uei_Yi=3dBUt{h>ug&=yQ4%Ar-{N&69vaRFrcN8sPTEChUe+-;CW=y zY21qe>=&hKj&`>%*v zpKxG6(79q5aDfVZPt%n-0gm{0V?EHU$7M;xQUlKji^>i$Wp@aB&6=F`K$C!$>2YXi z)}v0U9yN_RR6Wi8YXZt8Y;e>AuWW+%C#&Igcnv%bY=tI$Ce$mZL7m2Vz#ypl{0$u7 zcf`Mnh`Kv#cK>(&2hXkVzb`uW)zQ37n>OUkoBP`Ri4(?Vb?e&E>hIse;_uho5)$Gs zw~h#r+q4OF+ilw>RBqe0*liOkw`=3TgUGgw1EESj(l*l1(yvp5{C3ZoxdpxV*{SyPe~%Gvrj$O15fd6KpaX*o8WUM2HuG}c%E1Yk5eeZ{eH89Xm_VsIF2@VdB!y`iE)~&<-)NRuytk`wniVG8%b8sFK(JsK!t3zw~ zt==!$@&~?ar+yz1_5OsY`vC_AbU6BR4Dd@PYL-U!<|%aJh3;gEac@tMNsk}cOO`o+ zQNTD!k0Fxim<=$AXlr7xFdbT^3TT`dhq}pHJb7^~s+!iIV$v#Tb^2YX>&c0uml z!ub-uRq;>1JO) zL>V_v*pua(MJFhSPE#(Op&Ux0TuP=KGEpvFARAq!Jo=XM={6ORl?o__3dyc?1O9KG z>o;x`?)zw8-jXGYb0$rmnANLyFKb{>pzQ0{$`TYDB!@?Y$q}u?|IlsSI^20(Sm4Bg zwxM!J>p)BQ$TsrselOSxhQCQPVx zfU+s;QOf)#e7@TW@6?^}Jh2WQA8v%^$~>rrsZb~7Kt&Uw8ub^}1Aim_J)HXf4}a6A zI){idi0B)8QNg9cT#GqB>#8B=c2eTK>xbequk1Tvz4-1COX|*p8ODtt-9EcK?Ypm@ z%fI>gXu9#)AiDN(54!q6Bwcut5|m#86KrN(rT0_ZXY(g7SE&r)={rdI7ef##= z7A;zoJ!b5ftgcVv4vz>|zVi3QFaQ0AZ$!k8xZ%J82d4;% z2(ol;+gjc^V0v!;_$@@E-y|Bbn`p>8L<8SaskGGRz{*065X0Op3H*U zty-YO^*}+r-6&v+iGAjH_EbP$o<%hYjvb=OIESqnT3)txA)bd{B!fWPGYM*I){i|YASBDzLI zhPi=T`?qIZ`Dm^6!n^Y<=55n&Cq#|@?$`?hu71|P*M(gzx*N6Vnz9ys zlGkBaaumiTM`3{>8kZ$4NV$)i?RC!mK9(=12ujt1PApaBEu7I%4)`J}7xr`lT_8{@ zfy@Ll5y(iO6apm?D3L%31d1onNz%|)|=){$zqQrBF1*xg2g;%d#E&Sn!AByhXyJzRx-GAj=zH+(ft+(E?y*hK| z{UO7KWw!6oL2l{iYiSkWZwU$ul|v)Ke{zds!NcD(E+|+K5iSRWhgdqcZ7c5_Jk^#z zC5~wF7NYUnh(_-u8ouYJ7*L!CxN?C97?7x7KwkJky0oYf8QrS`kWoZ>iU^($ob2=p z8)Vcuyuwmr5YD^jrD(KB)}j&b4!XD=HBzHdB}GJq_$4TNE(WDjx1z+YE%5$I3$Mc~ z;jxdkz(r7hIt}Uzx1plVP_2Iws;B+}1o)Ns_ah?7O`k*lKwq;L*v@5tf9h@d_R%?a zZyX%_gS0d7@<+oer>sS3qgL_ruO?|x+Yp6D$?MR{q(ex`IY^Plmdlzot*IsOi*>mw`*{LgBoO1k!x&&7Q1SyDP|-Q^ zqSI80j?)u#l&aDpdXhe+dh{VRqIan|?Iu6kK_Rr6TGIwEAyyBs^Sh>F00p4+@g``_PDpU%f6o@DB@-Bipo*cMO}HoBzC)=($*; zsq2X*Z6+G`#-lOdVII)-Yf>;E$#3lg%vONhz(?o=PknKjkVZ}rCU z?eI7mjS}aUqin)zRJfo=l@uLnrpBR8nutcqo)r;6CiYy{p|gqmto0aT6fw>qV2V+I z&ZNg}cf~&YM)2GJ`O=cM^*P2oqO!qv3zrCYT>nO*NX1kxl@#rlk=~`gxp-4 z{ltkA`Ae2A%N{;rWM*W?PF6qv0E@4Gfb#De8XocJ8xbM`;8|L6Z?eP7PKckgTYLgMsq6Ju(ejw=t-CTMPK zhG*&yc&EgoL@M_~uR?`n9V#2OsGcO^sZ>20n7MaKK!909IO`}TJ$jh*iU&LI@R@AX zt6q{sB)BW~mA5|z6u-`+Fz&^wnF~ignepP}ma^X=olRxu*uUb;0Ui$nm%X(~fs zQ^f}u@M$p&c#DE*7q!mbXm1@oF(=eF*y4(Zkgy0jBrNUO1KJaZH*}*z;)Tpev z^XA>(yk$%7;iE_M($mrkzxn2yB3YL0`FVN&8ceu$?ONfEojY@J^1mPB z0OOqN-`n-oFC8WFiX_Fkw;pH|@RdQp^G@IJkp>+GDm&-( zh&1aFmZF8fq(w86i2712o-)Ou+IcN1rLbSYI6kEH6*MAE_6EFhR`C=&1OW*>h&hM7cV zC(~3(Q13K}s!VsqKfn8|6YN`1CU?PvIvMkZ*UETqVk_DApkPzkFB9mhlLN30z!;EL zEEg!w1Af#5mO zf&mk^&;tw@_7>68?>aQW;uz5BFj3@}^dknGBYQvs-JH>rB)ytUZk-LlT}g!ADBv09 zsYVe)jXLx-vtKClSUrM`yhmJ*#>N=bHN>Ijg*a46j6%hP6)1l^8l}J5fs(14;LUq4 z&S~L!`%QS9nF~$qvrwN*hU)%0sDvln+Y|7J_+R4m*5G;kT*cnv@o*rADC?c?Z|(EH zAcn!T40vx7)F&3fGj%n*Zt~2-c9cknL+LZiQ0~k+R5VAU%7r-8NRCnVs5IohX-SI! zvmOyf9Xhg(Vh}Odpu^}C=KUh(NFpw{EB5*4q{o0xtoABcH?4+s?%28+vxnBUOq<{* zw>%))RCbR2YXo8(U@q`m81SPWpr&~8QFy>HCk7mRfC0_uJ@U)mZV!om=CR`cVLaf! z4&m$M3N8%bul)Cve?BZ+?%lUv<}0txyuWSRw%k*vPUT;}exooWBjX>(gNqk06^f!h zXV~x&S?wY_Sp9;6<+fp=)*X|E=H{=QX{VL*h?cxgv~Us8{G|>IaPffR7%*Y$j~Kw3 zU~vrS`57rZpg0C_pKwqDWp~?77nas0qkB03>&(eU9bPi%Fv+09DE13wuP~(^7>jVD z2!E3ZWq+VaKy9-Y)ssb3Hb$XB!V;AIay3dDx1z+&E$}vPf!E0>czn1Cn#(Jp-ZKO0 zFE2wy>!EtBqT(0o7SGU!;=cwFnIC%a?-cXe`6WJ(O>}Q%R_?3iGLNcp;~C)dXQ4@2 z1CJ9Tyi&Ho+p-TnXJb(+J_==%*5Qeib*OY+i)sm4)H21PUYdv|rfB$?MT8hdv}dn% zqh8s;Jc4xJ~4^Nbyxhe=9i*V+25M;#Qpi>>twt(x}N3LA$2U1$NS6859n zUpJj-%?m`UW)dx*`y&R-T~73xGZ%PKO9}=|oW|U6TqMV6$CP$-cs)(8?0_vp3p^;fYixe$_BoVDyH<7r8B4RM>DT?MNVyQ{Q zx9*C4{yCiYf4R~pf5kJkEd2JrIUbsqEJYbkoTJSO@qe4B)z8 z@m%0x9&nP%(pOZ84pR*U13sh1*>BqeqNnGC`3616{~s08fA;S&CNM8>X$Sn*tSc(o z;=nZ;Jx%S4B-Bt2N-ac@*_W?%L|&5alKo00ImmI zHi($ZpIJ$#>=7Si6woUr8l8*+B9a9JnzV|>)i5arb<84aO6ySd>^f9rUYxKVr7!G6 z3FgabtKoHO5j^*9geENt>Vq#qed-ca_Ki^K%0X4$4H!@?{ym+Z9lvy3IB=VYvYa_V zA>GQ_L6(=R=8+nAKY=QB1=I(&L33_3JWlK3bvh2-=Xby-F&3o^t5G(76)K$9qOvI# z)maCTL^NPsg!ieKVi2nIPjer&4gsRG_uVXB__=``-|Vae#AyU&8?I4|p^NXy`1Jpp#UNjwu*W zoj#|!+3(wZqo4cB(0=+LRNb>hUySsOQP%1um6DzI2A_P@Qh zkZ&WpY$W<{J&`zvXw@vDC9{YY&;Ka~yt0-Q9^k@&;yj=@2K4{X!2^2ir=RhFkaLtV zY9^(vE$ePA&?X7^)S$z2F27JoK!4sN&b*fStyzGt;uRK$`UzS*WzwU1QZydmby3o>k!e6Ukd(Whu?n2f=sg0 zDVn*UOWsNkd@Vs0^9(em*P;3DEqI(=3(vF_@G@9Iacvh?`+ngFYoQ(Wb53zC%ar(?f=4tzHwAef;=|e2c|W^tbYY0vplQ zG@=i-60Mt0w0sWH!ns7RFQNyzz{42uFb^2|HYq&d7ct-@6}34^H)pjYDORoUL3e$= zBt33P0+uVhRg1Bb4nqvl=ws&jKs{PZIs~N(Xvw@cS%6Bg&*_2yLV91 zycIs?Rm$!#&--!EWQ$OLJ{Ria7onmpP;Dp)RjEIT0nYcIXZuDGDSdg5dkU!_X8~nS zQXf13d^!_qQxw!6#X%Fl4j$4*cwOHBZ{uc^IInB`GG3oHKNrb^&zZ?EJtofae@+^#*Q8kl!KkuM=ad;!k zv>{C_Q~EZPhYt(3Hu_|vO=bUG6iW@b@-e*WWrM*iH%vk_e~5xu>IX!Sy( z#jg|1Ur01(nL`iwB@7s|gA^W690RyN$i)L(xj=Y4S)X1(=_{+bTMH~Q3OJsu#S6?| zd3R6>Yk^wyko1T&@N7Ud{L{5)mZC+&1RZK$h(UEz6e^!yi3-LwD4Q6EQmJpi=Sr;N z6XKN+1&@PUpfRq5+Oi+2f?TNb7DKhd5&wT!3v|XmbN@}h(@#5<>~q`aQ%UUq5-M>l z)Q6vk=6Ezb&TWC`_wU2&&d2aMyAvgo*P=}F8kA2HQArX|Em=UVWF6|KalKD~ucSwa zk$3n+D}B@bOfeWHiOLS2>5`y&lReno7607pBMB<|2d|gSVa<0Cq4M@m8QfT& z*t?-TbZDrx;m4b8Dm%yiEdntPa4zsL25?Q_QJP?JJ%BO5RU1rj<^pG^LiQnhljxUo z!vEs@|KS*a+`lf41!(2T<$0*=TcFzN36=Ms-~i6}FG)lRzw5VGNb8BFls|kNI64RF zlxV2;iqOO_fMC}CH^_~e{kjie-;B=Jb*DEfl6l|wKt5OnG^0C_?PN`j~nm5_RqPnz&|Kh z!GhLp+sR$K_pnZ$@=VsQUAt^ouU;)IDEJ#zF=XE-N=YQzxSnXi5~A75h-R+*5d$99 z0~iB%UWj?XPcXpY9T4AZscp@O5LuW}IrG#S&qC&f?)w(VrukyR+eC)Z;6xm0>dJrnZXlM?;0L>{qJigMwD}5Wh zGxoygv>v6-M4@crT0Ft}hA{@!&&A-WWIYi!&K!VsfZ`aywLzCASeyqG*8?8r0WJ(kCa>(T?e(H({U_qTI5sdAFdy&>2(l=> zh#fjw`}FOXIcwHy_YWRCl+W`^tm*${$6iDvTZm4aAX+Cn^nh1a621HgO_1k>9>xI0 zJK$3~(|56L>97#%%VTR<=8dbJ@&5d>IYv=s=g)|{K5r%w{4;m+yb8|;8bk~;YSB*; z(aju#_NEwwuveH_izcR6)Hmu;OXAspXjD#Ij3=aMlu6o%Qg`2l&#e#Pm9Pb#$8_-6 z{{l2AqoA=KgNkfW?N|nt>JM@NXZ!~fDZ2jSo@+$&x_th1X`EdEwM`4PRSV7c3*c#7 z4KHasd{W*=$;3F6PGs-%b*N}qi>k>wJee$_t~m~kQgvv_Itc3_CIOvIBG^A^h*5_z z1|6O;iC8YVvB#f(r;P7kEGwDE`(x*ft(Wo2$Oe|@hc>eCektC+H>zI?d3d*`a^FD_ z*18{Uv%!9wKzE%SfO7%H0M-Ouxj=CYC|(d1)dku zJLZMBE>Ii;6z_od>3ILw^X5JsZk;;3uH}_c^(=G7)XRvPT2uaNrFTKPo96?~B5oK3 z%$EdAHt34&4ieEx5)on0A;>JEdFpyJGRLA$n%+?ljE_RaGg_2O*o@LwcA>=et?*7? z3vcGv?`okr9}RWVJg5()L7n+7RBKd!38og5~Kh-6*FC}M!g zQSX~z&?-BZPr4C@m3kld_-}coQkFyWt7my}ctgvxLz-A7@!Q|8xjej2OL<6_W^(TV z5!O2UIQ}{IGYG^uz+B+BFyOa%fC~eRq{%*QuN^)2KOO(Yv4Cp_{((UjzkonX+xC%G z?k!lbaPfVf1Nuwn5%ThguHGQp{XWqw?h}q8n!)ozP7L6gL1k`u7tx44bZp?9yjS{1 zWR4ruK%O?Vky7)0ZB%{Bys>pNcD?q*{bZfGi2K6a_}MFzM0}be;01$#2@>;Lt_SKJ z^+1yjp#~lN()4I*(4&4r44#r=P(4YD$_ZLLaW)!d&&HtC#jPlDE(YGm1bCf@fyZYr z!y|qqG#Q^mO;)IKmqWGY4{!h?#p8qLeeOT*V1x$vOw?9VQVi)AR^7JA3?D7cuIUdf!;qOH2Y{ zO(O2O>vy2k`(i*JFDjk8a6;{j*T%5s=cxB7Z-4)0^2k0dyE7ABj=*ZKv@}~D`lR30+6M5W#ro3<6 z^8B#I7UqG>2bWE*WjVC8WS+Zq0F#KjDFW6ouVsGAJlDitVFEgt1++1W2;%-Xjt%C= z$vV_DtaH=@lUAer*U>0*Y8OhTya6A>8hCxX0G^g8XmZy{u&$_A-8QCX5Fc4YRgQjWvBFdL}}qf7e^6&znLiSFI)q6 z`!3PJ<3#gfh@Ojf%nME3K!=CFk~g_$+swW_n#;rbIQEM2EE`(bbZU5F?BOG zzfvWOc_R0Rx$`q<6mZ6%#mhzk<0TzN8bk~<>d?dG6~?mx=>nP=qS1hPa=ISX%~7bF zvH}&PRVaIo>w()*;;J6r7j*DS)4}7|MtGcD3C-(*QFN#2A~#DMnM9?}_j#kB+G7%t=dM3{SH17ux#hCwk8||+zdWL$qWSTj`SJam z%cJ=1@7YS(IoGd4OSx;`w$`VV_~+QqBoN~O=K{Zm0bCn=6bA6jAYYe%2;)F1X|m)0 zC*xm<{dQsU?)6Pk%316G`Djsl$kF2t+x&&iOAmwmhQqSBbWL zOhq%abYS>%dE>gb%k0kkQl0w*`FB3Pe>0gs1Kjt;e2{Cw3n$dc_-J9-T-E{kv*WJM zA=j`aoqD}Nz_TU+VK(g-BoU1bBI+?;X5O5#29*+*qdaSY%&Wh9 z13t{NPppDh+HQDUT?NhCQ=$3tBGhyMssq210}v_RzPzK8XZ;@ctUh&gVyV6J0p4MB zL4-H&G?KQVMB-+Yj$emz@oP|tdzvojQNt96I;{B_wP`Zpl`vg2~&?=mW zz0?<)M114MKXW=C3p%>oCx6YsJNId4t@Xi98|)nWS`14kx;zCA#+) z*-Bfo=+4noMK6yXb}zDRb4!m-zRGS<{$2C$d`w^7CE8TxzONa>8(Eka&K_OwuK0Yl z%oD4<3f-**N}?*wAYis6VxlBsv{{cqsod|TMaMKfB2sh+NEgxEB%)y=&j!SxM!F7_ zr8TIKxD;j2Za}HayHMg=0p11yUZxm$9FB&^=PRH&x&rEhUqF3(1ysv^2L?Fbe~y3l z-hAAnGaQ;w{)^SXv1oW1^zcbtj}j+ElsYS*OnfvdBx+IF%sovpimylgR6Uxe=-_XT zL7375C7`=WzyOn8@$?#R5b&Z=#D0?qySw6_F+5qTF4{S(!ae48u6p0ILz`G84{9cl z>(@da*}J7Yq(>`xKzBc7A8qgUt>liq+godWu*(KJ$Nqh14!}CVqcFf#7kpd{;9lW$ z(qt#tYe&DH6X6^1udn|X=k~w!eNaeixm~+3dDqsuHro$R5M@>%`k^Y(H#Lc_7sG(m zrbJQ;qNEl?XPXe64I@e#MRZ9Zx_9w$KYx#XatiY8$;PCDH7j4g->XZI+&!{|vP*Di zuU3lYGtS8YrVndud3ksP3x7tqHvG=qa@mrovb&iB6c|O-9!bFSW)WjeqSEKqPhzjI z7{~4)Nee&2S~N}Jy#adEx+tJpYBVaHTZAVJYf&a;GfIBH2R?T`fLHuxcphQT(0TAU zHx!!dr=X^yz(u{NE!`wlfFdT;TU& zfNNfexd6`%^X1y$1=3_E{ZGU{`w#>ME3t3gwezW5o3#{?trU^`1ks&JM7N4zz~y=l z9^k@&WIv*Fencl)5S?sIlsKN~(ng~DYz^z)!~0S9eejlT!l+)EJtCW026k&H5AEGj zsrho>7i&S>2gY+Cvq#s(5ZJm!z?{7g!Ed}GpKu~Ag^28=Os42a6CE6)bB z;d&s)3iD;=&FA&XY(N#mYE(>KhjIy3iI>FC%$U<8&=>H5xvq?I^+ABxN7|t`>4CM^_3%ga{TYM!Om}g4uKd4I2U*r16*~% zU&{qt7~s+bIS;r-#T{Ufaxt?~VoRm|ND60&ST>jA* zaJ~^K7+`Ek3I-$u5}ghrI_67stUb}WXNfNFCdzTI?R=5Fh$LfT!MfG+vj_GFko$FN zERX2ZQXbd8h0LD`=7legXsB=i?hV~BtKz+6t)|G$JwfafvOh(@iw5=#7Zv_HK+-vO z2T9D2d5^e&W+puvFn>11pn96tu{$VUKpE!Q<~WovitstcI|Mht^Yex9_yz*AvBA!?92 za3+-KL>SSLAfhk35hctdy8bay-tT#ue*4_L^Fz_T_ukB%JhDq>|4xl8BYQWO#}8;O z^JjzWfy@DzFD{+@RK{nEOWWLD57a9>cb$>zfjr}?chmz7B6xRD8|KM|XtXj3Xq*~{ zx{@AGp4X$QiT4MtK=~8VD1G)#lw{tWtcCa4CGb487#{LcXl^Zo`fxhb-<^eO?qhHO zXa8R)k>d07xaa1#AC2kxjR0K!042_HpWiZ+HLXE~i#k*>#iB-H3~Cz%G&DNA4irC6 zNr#S-&Qb4UPcKQtc%vS3B~g{`&bOaA+lkel1>$qnt+PhgzpH3|%G=-AGHGBld90MZM%1{)_m_R8|)nWdCnYwxj=CY;F^F-5BMb>@F)!6 zd7&$$$u`<+M=$)(zW)J%O6<#VyBgYV<(DTL`A|N2lHIN*D%AXl0hwj#0S0_ujp*i+ zq+r0M`lMihxfwm+0q25<&V)H~fiEM74lx$=BT8CE^xX*}yZiPc@Z3^D{PBW?uT8l3 zboVCmh@Ooc9AHQjg(os!WZt;prN5>gXclnRC}O5k4-_$yXI|Os)+j2Tw_)5LXNpEM zDFzJ^c~(|L4Pz9lBrZn<=GkX9ppcpm7{ z&LE(xQA9u1J&ZcV%lkP=uX@WQqR3tGuhjcQmHn;RV5SsFAe8d4Z7+A z#Wlf4VZc?=WJ~ti(To0*@gEQv!SBATeY0uq<-BTimnx8j%F;b5L3!jscDw4Q7{Ivz z^MKox>1P;_-k2U>K$1T>Fo1bLYof2(6MfN!Xn#ARqoawWIHHWS$9s-5XzVM9= zt8yj`4w8p;ufsKA%X8clS@A3}7vQuWMF->jGRC_l%}{&I4?lTq+CMB@q8C(L?O zmqgSyifF(-r;-3a)-!m%&&c|Q4g(}TMsUt!5b=^E;DEc{ef~MFdfywbR=meO{+#!7 zk3ZLU70s_dYkn=AnxDVir>no*vvYvlwPT>NW14r)M}`N;5f9>@W539m191Giv;gJ- z#WBE@2XKFYt4Gj<0mWwqT^MkKG}-3=T>Lv?Kis->XQ1s&elxp?8c-V5q03GT_(8#d zGQW)hKU5+5uKLe&0aJ4#V=H=q0jI)=j<<2}fFqrV4s|B_IFjg-zC>qN5dCo0X+`Cp zV@f$)5WVD?dlLsXwoD#SN9hw&>Vf0yWbB^(#C@e6D7v*CV3!2E!?Ugm9~QxVaEe!$ zS?}-)GckW&ho;;UWL}S27erJutwkm7uS;5uvW6`vbz>Jw+0OkUm53nZ4@$bR_t_yHo z(A6XOFa~h^Ka2r4Nt2!WpNjuLe}4DFt*`G4vmMP3ptIDH5~wK|s3E0O9lD}mKotc8 zQ{H~=_2GJ7=K#3}>;268I|R!e+l9!HZA0bup#gG4*N)ced-vL4=eM6# zZRP=dIsPBU0FHlGZSYYT;F=e5VF1q#e@mL|bbIaSCI5;1KhQtI(l#=}`r3{*xgY1Z zrlS->$H<>fIWfRU4Je&z(-o>g-%u60O;0#6fHgtQk9t6^57GTn^Z)}~Jm5wxQgQ(o z1~3mWv?_)HVGbVfWhBv8ovG;aZggN}r@USrgED>ngXF1Gr{CLu;6PrEoA#XCzh||7 z{>dA*IaAxqQ~TG*m^G3;BI{*rd$rQNWSx8KfzJM-L(GSbx}Vhp+oy;KGwI-$Dx#TD zKm$p{Q)Us>&C#fwuEi6^7?eE~gHncA_@s&OIk5tsN8*(IdYXfyp^kkI>WrIEjr;ZY zpFig80dk>OeE;Uj&-zY(d2gSpNy|~$B;ZLi&-aOFVq{M*XRnVWpsQK$@bhGy!ziex z8uhBJk{f&c8Amw&-=YESzqf(|Pf5J0D?B_&c5l74~#mFWj324s^D6>y6Q zYk~zHq+r0k(hdx`TakVf16U7W9>BT4>9$mOERyy|wa@F+HvFwYu=$*uhSEgd^` zu|{ik*{Nx1ZsP*UXTQjcnlmtS#^5I{uMV%3v3yEx%O{J<N+L zd9vaa#=aO1Puw8Mu@ASg#JhvmXZRn2Qq@ytq;Kd}yF&TV(p1J4NXI=2d*C+5QA z)EsCIt%o|{2voK)P>okXrG99CU~FuxayM+)pw7(7dXMPwH2~HOe>gg&gJBKIC+Sf~ z(xH)Aix!d&fszgpCe|@@=xGu$*d$`KBw(B*s1_In)p@tR{V|~9tGo(z)2qv~M%TML zb7TXhpPTdki36Kj#_()E_xShpmHT(|drmy z$MwLMht|9s_hPlov+F$E?GeB`=;Dn6W-DHSB1V}63^ECdUuXvt?+)VrIRVX0F=%Lr zMeQ^J)umOalCT^V64_^CBTA+0gwG8vypxy0GcgVx-|C@B8VB_e)&g%q_1!OU0OwI% zx^Rho0De!iMV6era)v3cRM`{}^-Vf7HR<3h2?#an&|cD_n^A}Uyc1dCdY_2rO?te` z`}W)w|E$NbF7xJV74AFd`!d+aU-9%B)YQWDK4rGwIp5dUsrf1OK92oJj(z9b-^Tg= zcj;uU{?=X_Y<2>7wJ4n}j0L|316-P*Yi6)G2HYY|_Cdg>tzDDA`mHBpg@6b#5IK|kXG-`1d? z5U$J>cgbD0l4C*~Z+sKWoRO99?wwyg$K5@Fl7Kv;fNjd|AT7qR|GlI~UxN-^O?tF7#Uj`!pjE1f zCaHSVGYP0=SchuHm8g`;^}w|#W88|8>2Ja3{C0T7uYl*#7vOQ>RcMOzP$wRP>ia=Z zjQ~^{SHu@T-rl%)>03V{`sO!@f3cIDVcvS_qsRtk9qRFpWA^jpdLMfmm~`kZi5OxO z6hBYy^Ic;U+`Gev^_b6>mB?E&?MZ(76}`sk=c#yljqck*9@e|1%)H;#>(jkcpxmWH zklZmcSdMHTBDZ(G{cYNW%56dd<+sI?L_sd;bFxsx85fnpD(1rp>9qLXh#Pqf{suyeNBFJM!|r_ z3I?24FrYepOO@#km8VPv1H7rwg#nxkFb25#ggF=BSpgRYxMl_~H>QHr=5%0VKwiII zza0BN;Q~Ryyg%LY+>9Cbj-NQ5Us&|#Vc>q2#eV2LZO(!zewI}e%gO8^>u!$#Nl=|P z=&;zJ!#L*43UAh-7taTp*egs#AbaL=J&^gfITkg!9%xvN3dvC@mk^86$@@^^@@{yi z%!QYE5j?-+T|7&mKKusMR0!3br=h~bNdSO;@IdCxRo+BdUl$AS-#m6A!?#~e8E9OE zrz9QxQv}C+ANzS41!afNNM~*1Wuu7C-Tn5nU(@DSDre0dTQ6hQsCpR>JiP`v{5;vy zYjDq23h(dJ#b55xIZ*EE?DgS#pDXtH?Qh*WOl}<#B!_nHWUaP)uMPL@ggheTKMn@C z>H@{}0N1<_Q6hI7~seS7z4r;3^-1Hbe5V^GBqYi$px4P6vu#4l;gqx)&uf99T>oR0M7~(#{ixg z{H6{STxvj{ZSl?P*E{SN-~HmT@A_Wh0)att&py4ayZ7w2-MxGFPaBoz=iBV3zSx<& z>V*)?mgjx4Bms7})&m7)f7p8|g0ee^ci#**is*0DqC4~H6!yy1!H;=1&j(6zsCAxo zcO5Dxti==O)}pLw8%kc^3ZL(G!|Uv3cpi;`NAgx^Zp?++bQ7w~OsM)7%L6;03AB4V9=&u-)XjK3c* zER)NAp0ACrm%$zm&kt>Ed1i1^#oNK9`3>yh`y=mv=v#YHdJ~0Tel8Z;y;Ar z|INKNWZDV2 zExJb4={u@Kcc~m@QYp$MFDDOB6XidQ0nVAh+tsPy=2LWFNAtXXy+bqof?7X_ZC8vx z&ey<@5IHO&TwcC>d3IV_np;fDlTLq@w|QaP%+D66bKUF}$g%OQBw(#kzy#*a>=kC# zp|?qgPG(Wz)q$x3TBOCHQKBAoB`s>EN26+D6e^hol$YXAI{i(QxbrT&rLFL~6bsL5 zA~ZXnhvr=Y>hv>E*?K|6G0(BjRNx+G?QMX7ikVnrv)^n7zPY;Vt|7OyhUB< z{RbEj_5cGMJfIPosUBTaFrb=(0e2J(D5+pT5o>~q9^k|PS1yoMf%1Q-Li=|&&g<7F zG}ABekHx+VA40;}r#Mg^H-22!kt0X)^YZfkv_bg==|uiV+RoYMqEN)|w!1#tlB37? zuu;Iv%$wO0SMkYk?hY~vNIv25M5stmA?NhVo&|-Ohks{d)py^Ym^CY9 zjWV~`)hM8!q{A@h{=;V^0Xy93>E(+5x9614UNoV$^7eDRkNdW#Jl#|tH=vn3(pm2t z*xgU=qxAX&DD!>X=i9M;u%h`XdOzp<3il6}BO=1(h>##Th~t09UK=v(gnQ(;i~%+x z1p|t>9>98_3j??==;8s)0bCfsHG$&20n7t9{w<`*zHYA_y&@;V*Z&{)|KQjUi)<@* z-#*?pDt{48q6IXKX44Dw>H`c|NKy{%wC2l|BC(jf|? zFDdW=4@jX#lk0-`RCquZl_DE?QIVntsEP8th_Xu%*-BG>W;xpbZoT||eM78& z^xb#GzVbC9LJp1KJ;)()*KS>{yLP{s%e#(?Jz;<7+`5)n7{8-io}>er_`0b#P!eG^ z>agCZRXhT?9>~7*m zB=_vI&pzkuLly)bOM~guEig^wygwGE9~>~fAtC7aa=`gAf-dGA{#zyc0F;0D?KiSF zG!b6j4(|6^F^A`xZ4#F8oO4zEZ20eC&h=$XXmR{~Ei~r+?AxU8_lbU=HfK^dq4}}T z)8vtQzmGLPG3&#JPaLP@{BSL;fFo5R+%EJKG0*v0EM#1M# zxZ5PG{Qr;tUVXGaLk4NXUR_)`UZO?x9NkM#(?bFSxE8pdUZlme!ixbV zwSa*E@6k}&Ndsw*4-ep4K*xZ#bc|XH4EWWH0ku3BVAA)7FIA&rS54ae?)62JCPi}I zuR3h(*H6>|eWLqlefvdgF)=F(e)!@0YZeC2{jR!?zB^j?tg1o`a7aj1Bs?Q_10>Ah zejx7#WXTwsm59DJ3&K?kx;YZjAu|a#WUWPuED22xtwh7r7}Wc69cmwV6*Z1n5PI|_ zR6ie&5N#8JbCx3L%|ryzd6;MdOvMD#>eUE3@-Tw-tVhtEI0T)_+Su*V#q*U~w7TfZ z%R0Gd-h;N)80}!)f^Yc9xL>hihf+njXkZB6@7wbCMrZkcAICp?Hr#hxC!X^YH+*=` z&*=AY?$>Ahxz``%>GkXVK9Tna=&{eapW{E8^Z&5ndCfK^yYRc4;3R_P!2qKcU`>!~ zflBiL0|W9Y_}oc%o4Dl#{d)AQx_7*9;J#Ry|318r)@Sg*yaBJ?UpTT@c26J+-Ab!z zCas{kw1n;y7{Ijv^8m(x`@9$sM|b$}fJwBK#tI&wW556p4~U>|gdWh`1*+hES7a0`GG4Pu!ZUna!EJ_vk``E|- z<0Um+tL|Fryu4LR+HqHb5-$(b3 z()tV?oENqA5m)~UFT01)dKyJm8c*g@7@+e2t_2>azth9?4=)BR^r;1=(ngv@uhCd~ zi$(|xD5(W>3`n7_Vpkwb@Bjk?8VL+w?*LbE2z{`#NzvrVz4Lp9S8?nc-+#Y;-rqBG zfIiU?+HJQ@%m4V}4~wq#zPZbJgnryPiBvhb$}m8cO-Fb)fN$X{+(Wlux*}n`YQ-(t ziRhnYMQ?`%-Lov{XqRwnksm}a-Uk@Ne>1*ME{_B=_R_$ zrxv)4)(Q-mNUzZtdW(kBdo+Z0(g4~+eS{vsJRpU-P$qStEV_Y?Q7bw@x_5wfp)S3% zvt`l5$r1m)*!RN#{dXR%MfZ)=MvuBB@AYk43(ucFe@&V|QQmiS;=>u_u!d9#2Jrjt zknm4M!u>Wg7AP`iXC-2?qI>5Kc5tuVj9$DOkhKQwh1afx=IQZh{A~=bI~aqyw#}&Z z<7U)2yau5=mY_Pv_{Xmx_`9bNwDfrdU3>;XUo1xOr%xdyMMkyHtO#{%MD?FD{@$>- zIImK(07R7k`~K%QW~?@G&;MmrMt)UrA>;4hU5Opf)hk$P^!sktXZ%IKkMH*xGybFX z-TraIdtWx|Q_}A%o%>lIDi!}5l3h6ACj3f--^#!M)&#GJ0mk02uO`TQ0;~;c6!!6Z z#o^<|=0`{TIT#@F{@_7*-L^hc*rE6x>PGKSFM6H&&=!FK!)PsyCYdHuf)@kk5^I9b z(tQF09-}AdA@NT-2Fw?=fK0d1I=YoMdNE)G?eM{X&ncX~r5*wUcxR9?fV~5Ly3mBS z?`&H%VRA%%ukZm*_7nBS>c8X9J{&;wdxY*Ar41h3S4&E?6y)Y!+nhl0*`MgAk8c+k zP!)QBBH37LWR0 z#i35ltEhQ88KE58BF3LZ$VYc0c25h1UULL?0u#5WBUeCS|?+m6;XJYSwoC`P5mR%i-#!rdL?-kzP8TDt? zK^_bc{T`nA;CG>Kgx0Tbq;u(#7tWnL@#8h=g2m?;17?#d2VFA;csRi4b_*UC9KeFx zRT;M`62@f77?Nd0v?`-lwv4W-j2qL|Vtlhx1ht_xyK=8o~7QRbJm3_Os0Fw$aK&1{*cs%$0P_H2KFHTQz`%g_iozKK zBBTB-wE)L{Mu$5ed-Q>`s%pP*E%%Fy&z_(kcil>= z)pX4mph`Gnm$A{tcSH1fI`+{Jw}TW}_X<-b^l+HbDb$|9_tQ9`~byZ7fy@Fr9 z+E$ra09UT+{$a;(w>_ci`k`4e=<}7K;)aiy@%Qxm?wQ_6TXd_>4WH56@6%^}Msx0G z&2KRG`}&AkpOSuG;N0(x|DnV4nk6Q?aMVrsfe1gAfdQ-umWctrd&B;{L4W^{vjn$Z z3kV)i#TdYUU(}$%dCj-2Dy&xg4b`Om)PO#t#a^b_`!Ic|6X%%(3D}5OwZXZSg7)TpjGS# zj#VTK%d(=cA|u>pLAR_#+-OTg8^>C-$d=JKWd$0ha6fQ8>KxdHn%NRU4=+LWbITBN zb_;^PU4f9aBvd<|gi!Vpbi9VzDJxJfBLNL;vA8bR{>p7`_r;3M1G+EKsnk`ZO2Jja z`HkFfx0q<-V~s_>k2OEu@6&Ji=zgBJ`}F%b_m2^tUM2m$!2_ejtdHLBE7AP)++Vuh z6#Sp#-7R;Vz-4-XF9!H~2l(m%o?3u0V9$=?-eZ{u^r@0MnE#&0L4&mB z+g7_w#fJ!#K_PU2YSGsM1DeoYYDK#R59la(fPn#9JQ$$!fJp)aR(W~AVlfe*^MEJm zL3)nvp`~=E-~sV8Ths#UX^Oyr*TvrOaQYYT4PWX7-W+XRSC_~%?MLhqCrLs>V6@k_VJCVaa2Yq z`vrfy6d?x^QO&Ue)eGK1sADr~WhSCd`cl+SjX@*cEjqI8#+K(#rF~G5@BjQyU(m7F zZziRRa=)m3WY9-1)h=AQSnv1ot!DP~T+F|T*Uk`D^hj)AVhL4{6+0T>r`}zdb z{QP;p@m_f2Uru%*%S|{&`saHO5BP~l)B?W~m0Jt&-k|6UTnPi1{~L3HX9<^_6t?F* zy)O`TZ5R+86|F^y*pG9Wic$%r5GajIlu99VkZRFaei-miQ48EeZ&Gi1P4Iw{T0jyQ zFr8M>?V=XY^#HvVc+>|2cwb1b1#}*uV}RHjzH|#M-8rymfEk`_Xo=T{9btDUrKgC zbrTK~;Yb-6z?xurdVm)L4DSHm7YM`yN@IYDF<|eG;@)FM=UpuZ@c%Aq@F1=E>j{OX z;tYbgJDe%-5i`PU%W&Pdt5EN=*E}4+g3xpc)pAy% z`uTSe%6o(MHK>!Z6!lYL(CCN-O)?YF>X3vRj=dGp-F4cwue|urKlUEwywaQ$bJf)S z9$z$i@A>)#OYYP?y?DP*%=mk9zweCyB+m^WudfGt`f%>|#J;ZY=r~_i?k^Sp=42Oa zZbCNcpNe2WAU&W=4Di(ixfTe30iqTdozHo^GV$Qe`>&f_rXri?<{;;O{4FFN zV*u9z?F0tA5roL}N*!$sP|B$`2g-#NNy z_~Zfky~F$dXT-jNFTQnv=mqF?z<_}|ZyY=*N*ma(r#55CsJsu}Pj+34CV1}Wujt5@ z_SY06ij3bB8A*zag?20E@%=#6f(eQR!xjB@P(-E$H`(LS$z~C^H(MSzqlvl#4O5u| ztVf;HH&OG56`|@1R6k}x=*g|9p=?F%gI3f#5QpnBV$nE948XBzzL#qYk~8Ad&Axt zA?5%E4=4`<&iL|x{0j4cKG9m#;K5q+*Ckg_kt%Kt>bal)Y+wN60CNHz1F8!i@D*K0 zpHfrWL#=5SwWIf`GrdDSJheby+C+nCJ&m9w8b=l{2HZ|dX@Q9NXXrutJ3a2*8NA2i z9Waj`{9r=SuqgxbBYORZ#l8;)TviA4*K-H&hz=RZ7;v*TZSsh`9q+#3DlZRS>B&F7 zgK}PJdQBMMknyc5gKuW?OwjFi8B^F_pYLjCvERN0z0`PgNoNj_gzJy5L9{EZtv zo*93}Z_jR@H}?nV_j%s||M-tjb|KA8uoFS?U_g$i7BDb?HNo=qfHE<_*H6?R14{P> zMJ=$0=L9Q&0UY~-2IV#1E*AzBWqIxn^1WfcIqo2o!T{z0>0S(|M*FD_eMJrFQ))&Z z3k+ya|MXzM8x%pWQ9s&5LufsX6d0iMfEl!s?x3Z#ke;V|#J-TeH_T}80^LK4cTO!D zI%QCP#D7}eH)5Z^mc;=?4Z!i=M;kgQQXAC2hc<2Uu)O!*+kVv;z%@j!vW~LWHMkZG zIA@o!m1lw!{f_u_g*gEGg~}LUw;;lnfbI@`F1W2~MaxVxnxrg8!-K0(|I1fU=g@Z4 zR1y(-d?P|rUPdjh`?*HQF(d4UwPYo$R1xcxnK19Wzc6ULW^SVZsioY|MnZ556|o*`h5#;<^4X7rP zt=}8sTZ4RWxMCPkoxY_y^d&Wfi7Vc$DVvoLMwv^5FmM*f(&%qXYPAfy^8E9b#W-=99cPKDhr)+RUjV@^*cY zeDxS`p^$z*@FF>qYF#x3C^8hAgy(G*;S<950|f`LOBigE&?kd^f)darQ^t*aH$;s` zv$Pcmv#-Q;wm8&HeFe3?+lU%`zw4_+)H%2k^;1@$(UC+n$xcEG8}Ab&pra}Yzp)6L z8U2pG*=I`O9~r5>@&Eh&XGyVCXKk`dbU&W+vs+B=R~~Pi|Gd86=X}g_zmIeOJkR~U z>0^6%XZ-nopYG|!H#|zbJQ=@P&k@>=H}`w+-uS)yeU0Y*ACCXk$u1ml6Vgfl*gQNS zi%9T*qeNaF5U3X5y+NK4V*dcf0QL@G4Z)w$b@}K6<~%Hx?@MTyo{n&!65!4r}$R<;}bw_`c18J8d%N*?BHl z!uTvJZplhSe}@&lRWrJ0$>_-Q0E!tc4$Ekg6^DjLWYn{7M(yvmpvHkD)ch(Qb<^U} zAZ;bWj#|+yQ$}mM7435*bWzP7KVQa`c+=2Rsj-RVzNqo{dhX;tI{I4Ys>}VJ`-&eg zsa?2YaqHZt=eBiv>wYooW8{9l-zPLbpMIaOk2n9`2C$!B1vEe3cflL~G084`>n5ZS zA+-z)U`^1d1uBXG-o4>K7{Ip$j5$GH4B&kMo)L0VqrCzHJadA5wP?=!qTXNQ3UVEH z>vsqJZ;oFH16T{-PZ|Z$ArA(8L5*l1HK&j1dVv8u1P}1XfRU6ab_NX|z!-4r2aAdZ zP8pgX8U9}q`vx}naDcuZEs*DecqYK$0DL2I_>kV(Ed#o13vM5qzi;oqu9^oFpZl49 zcz=}0omZ1T9WuUGWUR`RF;DaY_;#3#QL2PNS&4|UThK#|N9S}i+9^qBm6e2M>G24& zvrpItp##>)+=N>DmkZsmVP-6v9G1}{a}C<4N$8N3h;E7n;fe+Q?R>w}jIl?y-Z=OC zFW;na{QvaHLbAsP>9Y-0u=C8hKP@5XQqn`s@;LWDHK(2P@mU?54{+T-wX-&VQdfP} zXB_YMc{D$f`y;jChUO=Fw;cPt*MH@HpZ9m~c?Z1lzcSf{uib=$L^$NZfD9tR16ULE z=K(w?XkY;E4Doyb?+!B$@b?d?G!HO5ggh7^c)*zazTpvC)WCsS^X=;jgIwRc^;;u+ zUx@DvG6wLy(Lg+awE_OH9_Y&hd@*3Z-~o&Q&FCY60XNbP>Pl}@Pr(C>T40?A1K2wt zmd5S8x2XT*VgG%x?}q^fXY}m{3Je(BN8E`XIW$}wKCqj1*Zhh3Uw^UZs(C=c?`d>& zTUWgfs62vNx(*H+wM*Kc@r(iTne&HX*KNghwXKy^Roe&OX? z$=uKHfH(eEB)jm1o3NksPem|*XN0bV0cF+#hL@l*A7JnR)&p4&D2)MOAH7p_^NeZv z&9|;8404@t>-UEEz7TW&KsU#a5$K4g7GOQl7XysGfYBS&c|Z+sEx^1DL zqK`wy5QRNGt(dBqG3)S__RDfMxBj6ja=y^}J$|11W2^CgpT?U1({tO2e*c5)={K#j z$ItgB?Y40@>pMPyyu7b5_m_(Q<;gC5?k0Rggl|0 zcZRqxz)x<`Ex;JS9|Hr7z5w$8-}!(v3Z_FI3@~Z|UkpeVJRpi*6MMshK6tz+dh+nR zsPI0{K7C5GiBhrU8)yH?fA*;ZxM$2fQuG5obpY3y!-qs_qi%`NMi1?&jUL?9`SfG+ z&K^JJxVpVT_a*uxWjST7tw;8&nV+%Zpk2a)yc_7SVv3!;LM<4aWkr-C;bzr>&M66K zZ{r$Z4Vv2H(dbwl>SwJ-?Zfe?!+V14A$}wg&2y}{K8tU7@-Bgd@T^4iQ)S^jJlC?_ zHhpYQ{f-Cwd5Rq$p7Zt5{5`o}|Gizl-*=_=&YS<2CA+ZCP56=sUwJU#0O@)_nx`kg zy+N)87z21tkTpTZ0ImfX19*4Xe{Yy;fj~ZDmBs+(1H4bjenMBeIqr)AtOfXDfYBQ? zYJt)izoNR;rC9CJ&AHfC54ZTzrq&Xq4daPHS%u5NeuqRUA?f3kp7xmu<5K!+9Q6&YLD zBg|pNbj2)cfMF`{1to|YK->ct87x5!I^^o|^je@MeM9x>b1w$8 zp&mVo=8(i@FC_qfwTOCUyxed1f$2LZ?h!_m5&N(V^G=tS!z~Wb9RCT&ODU z&$&Ot9OT~mM5Fvwi(BQsw5W~qnYnG9f8!gTw{_I+p32;xZ}{D$vF>+kDcz4f{dm@| zr02&yTcP`T`+X(5{iS}tzQ1dqKYQctpqAZmap;W5GeXWl!VFs!R{=J=bPuWyVi zC@#Lb8w2M~?4=`H+FXsU=29iRXE$TIB4e_{ijit!sk?z4*(X?CqiXZPtkqoeE>kc3t?3GEJB#0_sz`>PfVQ7jmvCSrnWMT{!pR8_^k(eK-{tftF+UyIz8 zi(BQsxTuZuDNpVHz>H4XV$Y86?D4v+7lgg_jHezP#~Yx!$vg|G~ra zn!T9p!frQVFA+W=!e<@~_}Wtoa9@D+fU;_VvM_-C1k3Ug^zI56JA;+Q0OP(;c|0Hx z1{m`}%mY{t@T~<(Fo1UkYtR9z@BV_??Ot6JF?q~iGxm*q;CYAi_lbMSKJm{wAlCrH zA~o(ovELN;q$ZE(>|8J{LfgG#W1+9cSDEKj$_jF| zD$9bKb7XYNOhQ|G5?UTvizb<|XvDey&??kRi9uL)oS6A*ogtyU!y>f5URjCg_Fsug?HL`-E3kaKsI?i1egu#C=jz8fr~ z)e#9z53WQb&i(1jP@ivyDHb%d$!N`YytA$7!o5S*4;&JPDHe?6og-Do*{aI@LibOq z;r`OvsZhGV$?4d8T8Q|6ej#gr?VOLy>Y(w=&z&BBpP3y0WA(nD?(1oIdwJsDxZ^V* zx@zM8xnvjq=_c$Z!iN>afIxbHKL!NS1dYCcZ!I9=-yZ|G4&aYJ2Cx>$I-oBG7 z0BZsKF=hi81Go<05BCNAYXN@@;J%}P8s*tkA21kpBjKMfal4?JfNo! z=+yv*MQG!P_ZHlg_37KjcGqT)>!2-pe9D;<-)CJ_PoVIRbUOCN&6TeMtjJXpvBGY_ zNV^3?6)U3cX7tKVKo^^gb{UCib;-86Uk;?~aR%8P&2{zmos^WuMpo3N7z zyNK|S2Lo6S;97wD0_D{LzB_}A0fv7F_XW!G5;S%NxHrgJKq($z>6 z&pC>7)g9wIYYQgbsI6Un@40;K)KwV>Y1yw*_J*dF#{e1MC^E*_C5U^0_5^(&kn=zH z0FRr|G-o9mrL97}Y)}5TC!$%JC;qdglK59;3{_=JRb_mo%D7Zj7{Id*$G3N*bH5&< z{U5}f=ls9)&KBPM|7f86|7XVkKayQ|*G>2r5k4TD2QUV(9>5sDeE|alct*(319)G6 z=L0ITFJyQK`R@w&@&GReaQv5r0mf{AF9w|U+!{1$fnR-i0LOnI3}7DMj{%1XmmJjS z!}UeIri{z)`&Z}uzV(1l{;y2@bFIq#>ID^!$4Bbs}FISJ^Zc;f#%pZL#;K|RHSupBFz*{z=Z@8SP;34I;1 zxaT`ck?^c4<5y!p@0xKy_#sxKUq4+)=kk8O^xoR}XO=E(n)}@R)_VOvtAlpmjB@zD z*W35s#Q&d3b|KkK*g=GUmVp7jJfNyDfNKGR2k?B5R}(b)g8mr5eL-Vaz~BMg7c_c< ztO@#K0M7_=Enr{(a{-VNi$|3Lho=T1Zq z(1-u?&B@uG_`hpv7ww)~+iFkF@2(x#x2^I3Kt!(GEIR&9zsh)P98+XGDEt5<3~}gw z06nwJ=$zr<|Jey>nz=&f|E&Mn63{5ejHap;tun1>r&!R%WkqaIYo8sYJv+CB^T|8f^1gon{qJUv{$IZSXXrK8 zr2jpY?82LF!n;IxuYwrBbAngm0lu|>zjuJa1AH-nYk_hxz?cp2#Q@*FpuZ;g3+X#T z{up5F3NQxne9-q~x_E@bKH8|qKIi?vdc6C8f0fn$M)eZ+C%9KNe{whN?x|h0`)732 z9=WZJGv@Juc_)vhU8qbSz<8Wln<;yJ*cJN$ii`rqifyWlaon@BTQG#@cWn}SsuDV< zThT7vidGIQnr6hJkrI!3{K;62Mh+QG(`2+tv!I>Lg3g)zzez+Nt|4sP|C2G%F5~a) zL1@J9wSE=arUmrlKS$A}qCCp{=55!C`?_jR-ridG`V#%W&f;guH$C;cUWV6CZ*7FH z&!4yd7oh*||9dUxpS}A3lgTb@cN5+w!aF_~z5|*Md;3f0 zpPtj&`Pj@h&WC1p)b5_vNx$nk!FTqbZ~B(8^IsM7f876nBH4v)Zo->Xf&oS?U|_(N z^nk0u0QM6#c!1#@a2W>p?h0IKKFAjX3{9{+4ETvm7rvvg4___nIeCI!@0Wv@f7$=$ zll#T|k7oy<^!!g`sretiJI6Dsb0*#--r0MmbyMU9`Cqy9-@KXn;KbJEFJPztHdd_{{)Z)&s0~ zk6PsaLBsQ!{VmyrSKWl|M0lfu7!XJg@W%k|3;6qp`R@$+Vt{WgVDJE;1q8wX?h6`o z!oD+t{usbGU|@jnobaz?y6_`~?cQ3{Ysy5iU;LMi@A5FsKlfir`yUZ5>Qa6;XN}Xf zKki%KH@%bg=&TOTC+}$Qe0Kf~&ZUc*=Wc$geg3J#JFaRzI5$%!M^b$eFMe@%Ns;lj z-HJOsJ|Ghuyt89PKi=WtT^=O~H!2dYKbDB*M=WTp#NxV~1k~Xjfc?vHU78tsR2foH3P_ApB3=?^nVYc`$TFY z{vS(rVY8d?8WCPE0|Nr}1uBC9hKG>h9l)~z<<$bEJcL*eyb=Z&eF0xRz^Da$F@WoU zKge|9Ckp#;TT#!+9Q*%+^}c}#zPg`h|F2x`KQdhS&+~jb!_=bhCDZ|kJ7XEpD# zKDXcoXUshwg^{~)7TP7K1*ApVNy;E;+8Z`j( zD&GH{Dt3VMIRLQ(G$c~=VtFsam;(yv`(^xo%lYb!|3{Nu*ytu~B^?8p2XHNrOu8oc zKIy$dt_65L$j}3LSActiyfetV!#pF%-T^!(e6{`|zIs5J7{I;(MlImW0|H?H_XLc- z0P}#;WGeoZ!ajVxsOSH3-sks1 zm|c5lW=G*)#av^)}zrdcs)bTAI}zg~yhnHy0ngFS&) z=o&zV6)o8-Kry4EL)Lcy?N$u5OBm^?0XYB9QDwwCWc*TP96)%V1k=fnW{O)P{Oo%_ zvEc9Xx;yWh(pJ;&eds&DJYymD06aUuf&&b`d=J3z|KR$~xbIzF?DK!~#{VP9E^KfU zHWOis2LqS~7<;_zjiR1YCgriG(3O5hf9e13llyfKurhQ%-u)Zqnfo2pQ)tt?pU!=M z-dAU@>PKgFbUrz!9drNOxO-b@U#_ZtLF~LpAjg`Tlz;4<%AD5JANK|N?VBgbZVu6X zx2!m(TJfSokICB<858(6xN1dzuHUnG_fJAcn-w?M;`QA>B@PYKEU3rcU+e*t6_2`h zzWEc2CRtXrV6Pzd3}WvfMMf`0_Y&egfN_cy)7WdsF5yl^#z&4S+y!I~khP{3ojLxV z_+E>PUG(-V&z!q|MhEAj$?csBrgYQpm{_t0IMJg6mf`@$9x(d=@J(0$U7#!M19{{B z;ba%qy9paf$ADLfu#I#*;H>~WfM)~^9>DuTeyaU)rjBkqs@(w74 z0o)TXFu?E+GWvoB2Cx=j=mFdt%%_H*?I;Q#KQ^y#cyH%lI=0KgwXt$61} z?9fP{<8MV#k#@ur*cE>Yemh9V--=`{(4|hB_5sGL(tA%f)WO? zw;=Bp+AWxElQ7>dW0@-9XjO3l%L`Cr8kB;WblrFE+ooxSVU8*&#+?r`}o z&_iGuUQ9 zM}_?ZtqAvc39zO(UbSMn-HN%YRoo(eOO;SmRT!XafgyA{lTQuk&#xyAUrcy@)|mwp z+dAh??Bv4%dWxH$jKcxFK*UavKL;q^55OD$4<@^i=q9Wq!iF+1;7WQxSs0K?6#Q)g zh3@_NQt*MZZs8eVU_c-bp=-i`@^}DafX)TNcE4Q|K5lGY-`@YD7~q@xjXPl6^J6~g zv+v`Z`?>BHJwML6-2ddAN)5gqIjuFsOtJUtGL_s62)x64q^ zz6G^^-HsZr9SBX^gj!$3p>FyLT$jEAjU5SSmL;Qgh6Oj~$mpV2(9>=~AG?gfD*FrT zKEt=G`u(A&RT=5t@2LuWfcfWg^wsv{a+YYMM;!-?mp(orf9`~~&N&mhig_U8_Lso{ z{CffXdo$(%L_eSco&X~L2M*6`c7L)9lAExGN-)5v1y~dGuLXEU(9i^pTA-}G;S{2f z&-2}_mb~I>{X$Y)pT{NMWD{WL#A^XGSm-yz}q>$C4adU$VbJZt`=OX~i)le=qoPVJ)I=ac*YF~9BU zq=%d4XPAR7mCF4_j4%hVfPVPrC@MblgOTnk{N#VXYk&5p8}79y;5PQ=bx0U#+yb{- zadUPOI;SV1y^@Gljzl!gh({y#`Tr&Xb<@|O7RSDtgiyW(^yNC#NsU4M)D>u$lZYmK zGbq)9wyFgk`IeB)f(VBd{Z$FW`R1@<#SG>Ee1lAt@QNx!^L}5(_ji?FbuG|Dzkc-? zxr@(xe;yeJJ}Uah{Uh@47}s9AeL`35wsCw1pbQScy?{Y|1b$cM4uCiQ?@e~W>?R}< zA*q5Gz?vXq0QUvU+ZjAa6#Qj@yY1tv3!?h<&ug(_vnx2=2Lt?XjaFo5&^sGo+!f$G zfh*|&{utn-u#c0A!^e%ykB;~s!T=x5@3P#__y7F-zIgUT&;1_Ff8tHz7X97RJ868I zp1rG{oYPM1v+rG2vxs+Q%G{fggzq(-&M*_XE4M1_c3;f-9I4o#!*owxsSTszHMg7dpsGVv>O+`lNJ~KiOZ$ypsji@Dbz?Eo_ zW=5E5L9wBVW`cVPJZ4-Dc>CL!3Fcm|F9!&q1$yKE zo@5si+yt2jRx05EtOqa;;GTfN19(2j&;$)0P!TL@hrPZy_s=o4D*tai7b-o3h`UYxd^8N2s;tp6tn;A{)vgid04xn1Z zEur4oN$4+b3|TPVAz`{AVXobRMRp6!s)Uo5eQ*BXYeoOrqmP{2J)JHVobvgxxaq_9 zHWWT^N3=F`bVqIGxSO;fZc*|*>U%i%&*I$Q zUgZARds}Epza-@bW@E)}2kdDkoS|3wn&9FkGfAtO{>j_Qs?R68mm^!O{N@wtTB_SLAXdN_bXLNkYi)|nF8 zt7ddj5$@SXy9o4@Jt-=}Y1Ejl7Xi_kH^6_in=&j|bK0fv7_Sv!NqY=G~s zfVUR##Q=Z*5Mw^b@DA``fSWNOxhR}@K;&N(1AH|{Ns0p=g7F1%r`%U*Z;5x zZS3%Hjc5IC{LS0=osvR2hzd-(R5bxg!70!hOJb7dmThZ2G>Ry6k;aljnl6=hHMMlkR8KJgisQ$%E2uWFikV95f`&2?`&L-5zdixbR z+8qzd!RE~4M}xQF*ITYSCqgBR--maF-dllL4+)hPdHa;5u$#ahniKfXVvuRRVo zDps`Rd!N}dn&!l#QF;REbMDVrk6Jk!P=jM##QX|`i8<|ZSKZx8<9?r*@hvCE zU+KR&)x#$ykc&tOYVoq`iXLIcrdt@xva6##u6&Gp?{dF#Ch6 z7W8CqLB27dS}@wqbHNgBw^^{zF5_WE#vZ+oU-3QQa(^xoC~I9kI{V|t0e=pK1?Swa zZHz6LJt;z)Fuc3Y0lc@tBQ?I)!oOR84#4>D%K^OcKQGyZ=iG#ss00IyT7We{qc3nZ z7_gftct?S|&BFomzmZd;`)Yk7L@kidy+Lm+a3u@~v@cX)3^07fSraUi2Nd@nGdjP| ze=860@O}~d{+ged^NSL?@$jKWzb{2lz$Hdih=@77Z0M8mF7l;7|#?*grr(gEo&R9pV@)X>{n6Kz6N#d%Tb^210A-Yi9gy9Ye z=4;l%+b2iojUU!s;5Oqo<2Y-9jO&a6ItM7N1sWLOjsLmHF8sqyc!3BnRuBUM=>h&c zfae2t5(U3o;BNC!Iq`4s0PYLiqU!{rY{J`&skjUcaZ`$GfJ2_Zynu)GnnoKc4l8zhCe7U2E?v9cTuGh$IMeGO_WJ5cld+X%HUL-ow{sCIS>f=|UDXyXzD{d5wh(=Q=t z*E$4$5{D4RhaX=?=yw}YLwOao4y{C8_6o3@(fDX0nyG8iIzvW#)q*aH88?f$U<(E- zW{k2+m~4|UD^uqH_c~;}Q>7e$ano9zwCpWq>LZ1P=iTqVv7zvesRQ!H482JkH$2?4 z8=&L*kU>#iEs*Ctxb`dI0DZOS=txcQ|2fGnJnbetON8gkz<@w~fr?%Fp^xIftOx@+!?VR@s5bQd>T8P7#O z@G=g-exZ5|z#PCE|F94pYkwhCc(?gvU} z#kWMV_)e%<%o;{15(e5m{XkX5ZHh(gB;IAWViWrkU-i!+z|T*ynCOp`<#g#n$!>uE zQ&i-lk9Q>(Etowrf5f2fKKBA6OK||bAE0Z%BL4eEXk!0oR3spl0GYb z(|JGZ#k|`qX8cF-e&5adtdFPP$GM;P`yMxD{O`Wrx%0(3h1rSMp4)uibw$GI%vhLz z`RZ>;mx|8#4!~aVxm0xa&`&ALyQHocyS+6&w<0t}LbcDILCEgA5&U`rf{xqt*r!mK z$O+S%YY}v8DT4AgA^1?d-Vgja_ld8c~FaoCIsW2s55cKiA2>#+Jgrp{*+E+3{e|ZC;jxDJ9Wi0BX#i70}9*qPbG-df;pbFaCeUxZ)(|4Llg(-#o4!i)i# zMf$D~^8o+7VPjvYyqn{t?hP9^hKzlIvh)Dv0X!e1V*uP-3%paL&k6FZ@P8NvTw%^n z^!tWz-EZW6z3$iheK%=$OzJK?{qC9J>G#cUFZzA4_q5bLSzfcKs&l_8;|IHh7`uc8 znX#C0DkWwE5#{;3)>nGmmx@mPGjIR>p~_NJJGvGjKPMr0>wO4*LqgEc4n5{M_5ol# zU~)QPGH*ao`n?GHWG#X}NGw0ONAn3ag@9Z6`f zTG3UN&{NzRl`)ua57{l4VwZKFAe)Rw6bZYkqBr8jOVJN(KxdBWUSU^yzB_*S;!7_) zc5djv9@?-W5vBTpf&+N8!2W$Bv`F6nzb)B?2i=56sRRSK7GMl`&Z7q|@zes00WqFh zfH8n;0mgtpd&67{Y$pnSwZPrxo~wv|4-fFp3a{Mk3bGaHTA*(&VC)Q5#5&^|Kx<>VA)>7wg45Lu%~z z-7aSQ^?u)dGduBJdZG7ozi-=<4bQ2vsmgXu0kj+(s0scIoJPcq>u++|=(HCG0FuVi}9>8zXI6w9h(ooL8&UnY*HI&7D{6hS67_7$ zaGk?~FjYb`n~c`!GTJK%=RP&Eji`e|=_I-xnB>*TUcd9Q#HsVC)N(=O1#8NX!S7!ho_o zg?)K|u`6&n284aYUSebNg^$pc>Y0D%fA`J(-hN+6?jI^rvK zyNmLE|KP~B#lh-BdQ2m~IV*DMZiwrJhrOiT;3T_f`ZQdI>?lY(#LrgpgxP zQ0=H0q5HR^=7II7leq%*53WK(RYDWqFHTEDn`|p?RAqFtNeIto4q(AB2j2~~VyaET z9FIrgbBYAJfpt~!m34q)Z-!Ihsf@DH{$)>LVWE4^$2*G_&Yy86I_f4T$G^b=2K4K# z^%;0eUbCsmF5K-V+($YF7(C!_9zEdcE7Ssp9^mgCz+QrziGnv&P5g8Ga4jJG0|W-R z+&J!o0TuBNxgrLz9$?f0zPAMeVF2p_rzq^>w}p>T-`@XEe&Qnbbsv8*>nGwr+N=2) zo<5xW^;w_Zp8Y<~{XO&+JQ571Y3 z34gbnF<+5zJKyqBtr%l7WAM>!UHhN=>GOYG_A;0MWEC9$vYTxIuzM>^bP6Vp@lrwW zd6)yt4ua{|88D@N4$~zof{r|nVD)K)WUWTEuVqxv+=3eF7SvMWQ8#lr8rWjQ-SDPr z5?ZB8Xs4LbNwuH{a{yJwK)VGa9s1oc(GRp)aJOB?dPS<*exTh9`hEYimG(}^NIz8k z^plUA?HAq4IdDLvcsB<257(jx-jdh+)?^p%aue>MvN7OFdO%qi@Cs4zx&n8byRJR| z8~IaU0QUx0ZE*$J3M-BQ>?_VQg4c`zhKCSqf*uU`@GbTf{r|ZmR#xu!%=mkGzoGdV zvp!J%KM7XNX;GW<}m>&vVhKeYGL|N5J_j za9bI<-*|!mEHJ_3nhR6vKA85bMbMj1BY4*{2+3T9YT2)#`cJPTG-n%Xeq%+=a6wa;LqYJwG`F@ zfBs}4T`2g?_}(l0Xqwag+H0E&r%j!Z9~s`o*=NAeyylbMc45Aou!wXFFnGX&q-%nY z5tUmD1lk!iYJqh`!Pcsee~zcVk&&V|*dj*o022J)Uk|7>2Cyc`dZ3{RvL47E0|Wd$ zggE|BdwD?P-EZ-Ik^H{B{v-_WUfA;k9O2Rvbd*yTO?5{6lyrSRm?9bl2N-VmZcyD0W!qXXVSNO#i z&#zz5sRyh5Fjqu*K<@AV%m+-lCt*r_2SK0ALC}|R2-z*6+Mx}o_WPTtequ9fq^w2l zgR!W0AV$9(s#ww7=IIA!C8CR6Mo-m>KI}n6;nvN3>rgXQS~Wnn-PQLt3t zZnLmz^S_Z#bqp9GFd*1o;4T*fej^e)gB9WdfiQr30)~HxzlRWGfc|Ox;akOj3I_P{ ze(!!?iRP#0{zz@akVtVqnsYz<#@#x)m%iU8=KRF{PUn5Mb#gwY&-w^I&o`cKz@A=L zz1tt?y;UV#vdgB|>@x1-{HR(nQ?+7}sGY4C#P>H<3vO1;=&V|+HF7G_5+ZWxZ*7I1 z!#^F&?zG51$jg6BNA7_sXD@<2G9xH84nfD(BG|DGAsI2Kerh9X{PsR-Dr-?EWjX3+ z#G+A_gr-?CS|~|qo3#cV*e{g5!g8$W$2g|S7;l%ve&AeH#sZs!7Ztf``+>GN&=2pA zs&GFr(DU8#oQun2ECsEnyjO(T7YTETu)u=>i%Hi5?kBp82k?xbp$V3?FJ$ZuTZw|r z1@1QU%?14;D>?sDLA_kx85)t-V)d&!1~C6;9>Cfl|Jk@X&ND(hBN%9J*zgZ2wJYF@ z0jvocJpq3VU=4sjJ{Yj;&7$z}<8&VI@47GGm;3u0z8;33-ynncN9y~1!})e^FO6^b zh~554-MyY(dcTinecGRvA8eNY&FbnGs=V%(O^Qv%Gm4A_JTuF)vsp66C>9K59i8>` zEE(M#R&+>-N7(Nv&(0yD(q?$&Kfio)@W71n!~L?ybU$D^eGH~=zC+NNzyJVVqiEukr90Pb(_(~YS zdVoX}9RKf)|B_l@cwUQ`R||vf=iMUi*-MZyz_>ZiwSfQ4asN4C_7!IgDCHl*IKc5= z76ur7K|c)G%@{B?zi-d*e~X`BbXhw-!qD;{$KDYODi$o1kh(Lon}iP16dS0|Cn^dkJ#BYpc2ht=Dbli=g!Hn%|GBd} zu*8G}SkQO={LYyZOnZ5|bHBOwyZ3(I1oGIGc-%?+x!sIVnf&*7bWIV^-WG$#XZF4| z#Ld`t-}|+SlXLv|@i}wm%t1xhB@U;&433q6Oa2VH?H@t!SO$YV0tV}cpxuC={mW3} zM;^8IEkvE9a5PYOG)W`9&^WY_MRc;8(ZeR9uj1Pe6fsT`FqQNI6#;K5W~5Y@7hPd( zKs>;~4L7rbll!Z9St>tyMU1_^mNDI+cuk^RSpie1-=}hZyt+qo3+e1-n9<$Nqhmr0+Q<=Ta^ky3LyB`xUrv!r zGee?E;Sh~e?z+U`UI)12Gr|4xBXpT2=+1ly{q9#`*#9m9lLQ!(KSt30H3;4xjamuw zQ7i?S;Z@=KhYe8y(2WK8!6V|bV`O!8vDbZ;&2Bx8T81uh2zq8QVM=eyfX zyY}(#$pfe_Fw%bJSFq0kJckpBh&1x%9{)5PkP&F7IaRrpk0cHmexo#mCY^nS*f2yT;lev z=#Zf3-(sIWSHX!;@5!GOPM2l&ni`eK0A6Y!lA_U#M$@&Ox)`i>b*wZPS5Kn2f!bv1q;mvy!k1m_hG1-FF#IGlt(0J#3;P~!$=P<^qH}L8?zcI$RiZGyx z!@Uh~Cz8Q!O@(fIICQBCpx^%i4EsMsz=2p84}Srp{Y%u?C!khx1nN>hP>w-U*@6~H z7PPa+qI0UCa)JF7uYaH-V2n)rfxPM+^pq@Op(5h+)x>=HpQSn=Vad%U8A+Rpii=Aw z3j@^nU(T3rEMs`kn*&fCP#y!QH&`7`uzW2L#+ZJ7zPrto>lgp$F`#@NpkaW<2UJHp zK;r{0!hp+}4e-H$?>{NNY7Fq@{8Y|=kW1U|^>}wuzi)u54-d@p$-9-v9VR z-D$s1<@{csqI&q8jef4VYuf^2NxJ`^{YPv9XvY5un+elo5##M<+)F&UY{p=#$77?1 zBMzOFIJ8X_(Za!_Nm2wF?pXl*wf}>sFLNKz#uy8}g7~My?S2;=D+aghTj)Qz^`!#Jh~o%f2~2#J_~~PN1^t9Z$D5nqj{1Atw}4)A)=eQA1Gp=rWGcWUZ@!p zRW6Xn%d&t?iXXj$2(J?sq4evpuKB-hS(%@klUZ%NRO5dcW4Z?z!~NbIfa(C^0|*1A zGWNGx;5o+5_XV_CV0ImYA0hkaOK?++Pj`{H+%7%>ydJ z08KZ*S3^vj4=B$E^t+-wpi<7y$G2O}`-k^eb)jj$&)36;G`*f0-_`XZ_4_<|zw^Br zZ8N`kyRNERQ*95Q>Ty=ZvcRpj3V2Z_y=)PWN`j}~r&w^iV#WZg3BBw*y4vH=UNWN< z@#>0*M$$ag+xro4Jo){JjIpDa%3;eL(hzEJrSbnE!2R{EhX>db1Kp2{px-6VL$+a*Z`T{j*CLkdUbrYk}knqZGMvEjf+FDKMOj==7)5rn_+hSC&Lc+UoGI4>T z>L2*7BI0m0U&FsW?<@K_!tJdeqF8vjUDj8t=jNV1@q4ulR@L}l!kBIhW4OO#GA&cg>(h5;4nhxlT^`JRBr z2ULXtT3>)LK;s0@u*TnedxMvY0hQ(b-u+(M@wwpPisB4DQIt$1t4Yzy1}*znTO5?BxMg?S^jE1n76a1H&&C z1SBj&!09g$c>F5_?OTc9gmBchE#LsulA`Tx=JE?*~}Oq@wi=z!Ci`o z2dL+v?m2tOd=SkCXmi4Z0kktneF2&eB0fOV5Yn^*K4eTkH{ac6;y)Ar z9t`l#3P-FiQ1bxd00;vr+86TG524;5?Fwjn!{@aFD#`cFyJg}{2kQ- z)Elg39^jMrU)b@vnDe8$pPv05|31yP`+|QTJ^P=bXaA#}HBB$ozwev(J(^yAo%0oO zP7+|21UxIzEG+ThJnolyb;kcT2hGe1>i$d@tBCee99j~eo)U>hNefVKZwzYfTne1D ze=zPcX8yrqX&qjsJMYbQJre7{h4BK(zqz0fYh67a$Cv z*#N2q2m>BxOzjKMt^m~nmF*3ap6Fc0^zY=m+dTTu#s7H>P-}tJg@3~U;sa=JxH^2m z6=8rcC+M38P+#C4nh~nH7O3pmUv9_ee82CmzODyH^;YZtNnQ^h)wlbRuFhA~Ilm6% z-kG6u>6s17KP0mKJf2?o5&nEq{V{13P`^M4fI)wwRr36{eE$_F$J zAx%e&W&~+YxLP}d)DxguK>&(HXip65LtJx}uRd15Sae%}4Q$sI|{H*?|Bt(@fH}6CRSNA4opp0%pk~exW(*^09oS|4lfa7-J|~ zIlEELoayZ|XHRbHd~tjm=ls|1&raCArHH(Pe9=>le+y%}k&IykV;~%;4hGPCKxKIV z@d4Vdz}t-J-^zEldBl|ePshJ+9?(L?0Pl4;Q>0lu}sCHIE4`JnO`pv?(agaMQX z&~=(M`u@{mH4o_9|6+ec4G;eI>?aSeziWAGdB11IzxVlm-;4)(xSsa<_j!D~J^p>4 zyj3sP#&dq{_bDPuWD#GHo~L&QcA~o9N1hp^mq#=H0(z-6axB^>@o1GAi{@4VjT0hJ zpZ09_m{If0CkRSgqC>`>u-AR>*J_*u#+dGE1iTB$fseyz`rYn%DXi~+7q8-)Bbr;eTH2G7y_kI0yA zIAa**%>k$mAPgW*kn(_ss;C7tK0wnC@zoG|lQI1p`R+Ck|2yLU0tVcb6%xLxK(FL^ zc81F9h-rC1RT!Y&Xv7Cph5?t#11?|yaf1Cu-;;Gqzy2530_C3l9{;`zJ3hquQNK^E z`@Nc8YQOJZ^6%^E(extDkM{c>?V@UWy)~^}X3X;;t{q{4*P`EdNapd5M6*5~Eu8U^ zfYH_%jF5Q@P7%Z^fh5p^d2V$1(&SUelM$JG>*T z8ZqyCwp0}R^tsDD5dc@P030g>m-!2H$&;Y};Z+!RT4315BQSj>jAu6@i13PVD%B>zC_2R=qPsfhSW5m8i8EMLjzs2^zMxw22^ z)XRHkM!QU!?R;fYN9S|nJ35~n*VQ$D&ZKk63EPYF^K#sUC5*j7@jsL?+~Lgu?(*RR z2m^=@)G&Z%12jH>_Jyk28Jx|S{i0#U zUP=^d?^})FlbaEAY&~?xZSOZ@jD6}G+*KT^aY;Y;O6LFmb~u2G;J{@^f%{=6blcyD zE+GcGFHF$ypNoLBC>Z}-0pp=h)P7*Cy$euxUlbaq#-M3NJVFx9Xlvuq*&gH33w4MX zESWG|HsM~Iwi_VeNl8?F#1CFctXK9kRMY*oD6quzd`Q-uY3(ve%W>wTot@8&@9dmD zrlaf0387gVRxHdrc<5N!EP*lI?TlfFHwU0Ppgacn<^h+30k1KppOx=!`CwH3fW9|X zoZo7B?sfjC?hdOuLaPdOO2LIZprTqp;{(WVSkn)wbZ5|aMo{YuRFnt!VgUX7G;6$N zBWa3e59%MP#{WRCXKQ7eeyXO|Fxv0)=y{GkKjYuiHSGbfp64T7oiBU)eRMCx&uW^z zH`4$8K1GC8BF<016E@yE<1gSIn}A_KVxA`3I~oQe>jXWCRGvhzK8UJ-t<@e(;*D_m;=YwgZoATXPyfE&oiOlW`ZGc zIRZ|7iNMoeBWV9x1WP8=wkrZ;c{JNEpp_(|J{ciKrG&x}yXgqs~^bdk+yZ;M0AjCfDKZ{Gsc+i61Wo$C-RtwfNr z5P`|2`Z$#uKa(+*?;GG%95Tzj-=FbM5D*4%d6D3@?1yg49OxV-=)PYJeL^%0ay$Z$ z#Co_u(h9SOqmFeU8rT-0iJeDCl881|Gdd|Tp8Y_=K}qm<2dO(y0;Wim1DNrOA|ml} zi?+Re=9%7 zKa2pkg1p0)f&0l0-S&5&D~yHi(0Um5MNsRWAwt~@1HCywMHryX23#%%Ji}Ps*^HTgWvsNc zgdIC}yllmal?9V0PstfNd_)$-HQ_-20R#WRoWRFlAbe$^PAT$WfNx)*x_LmUR(w{* z3HoXXX?+20ZY?}x11SEJWAtSo&u(z;of&O2={Z2YE~NML z%(#xON%s%P>M~?QA=lT<5X!2L0TuB9&sN9-!;A+N0e3qr9!)Q6G5CB`E-X$5K}@~BJrM*D$jX0))!qOH2)#H)It z{k*tHJ(2rJ1JNd6n$3i#Z6#Z9Kx!!JuzN~T#sE7~H`T{g3T-nax6O7fF#hAGQ6&La=%*)Gj+wJy}7!#lW;Mj+9 zhTMLKng$ZC(QXmJboIJqm%xmcn@8W7J4q zj9U9YKwUWk4GsusY!?th_-EzONsd7e$%MXMd{n)INDGm?g9t}uk8gm(U-7Tz02VOX z@#0@qqaw4EW^7ot3%0u1>1^Wxhd9GQLh9evbizptj3#`!(vo%8d0_&DF0-Y#?T ztR^}8qy5hL(S4O5nK6s_YnfL)e8#FCKAwKxAe)FjatyjBThNhsaG6JlH5^T(g=k<8 zL!A_won4KfBa0Cz#p!WU;rqEu^Qls#TAr>v#+b7jI6(V>qqR7%?4v(U1AyaegUjW? zZIi&oJqO)?UVwgk1Pptk5pZli0-Y;h+_&D-4@@L3Fyg{)fX$3{HXdD4c-)*yy8)yX zMtEt)7)ijRq>ZS02MM5lV3xlyz#&5I34Z%Qt-`sFQ$Mhs^NlI3ozFbn&(&k_xYjVEC^jh< z(5`ES1s7vL0q5|^11iG+r#~=2^Bb-h1DgH3v3S_H5!v?*>+S9L^-?)Mn(=>pEP42J zaj70YlRf>ukDh4l{Apfr5zU4BwckfG{$@n0_o@lgiN{uTuX&K>%@A2cf60WN4iTNL z@o1aEqeX@VO&umQOb$a`;>mZdL$G5h0v#W4+?lldYZa z%xIZ8^U>a}Ubn0*^_x&1f zEcSD+pYq5*6cO*+VpP6*ns=Xt_F72K^H!PkJO%VjjYB7g1#MH!Xd%a-$=+x*+{>eG z(lXTCYerCdT(Itpy!_shvZCFUJlD$~$_FU+wS0hbgXN5|z)Quw_BDT=*C+>g8C)&{ zcV-K?Gm+5!vI=_JM=L*8`k!(S;1PfXvi5~wzn}9x& z8H3c_05ixpV5}r!66pllV(@~*<41q$gwVZ^V&dGS_4vW#Eiz|Ky4lrd(3(Q7eHlXs z#?XZ^bob@~y%^vu^Z3nT3jpS3;8+|u`w?*ec>}t1 z3v^#Dhkn<51lYn5cqk6Ww3Vo#;vJ8=d!x~SaL`Ws&K9(F#G|uf#!aMyBn#@C#0a~H z(MqhkGc`>zsr%D&WdXnYiwB_JLpcETf})>m?0jv?P0qd)|83n2?HEI+N-%)>0$MF_ zIT-K|V|5<8Hu3L!%F0UF*|TTM4jw#Mx?{(V;`k*?3Z8rZ1?nTX`t1n)PTW=jD4LOFmU zpqXqzE5b+Gg;G7w%oso(Xo`rtRPP|-0zKYg&qyM-(Vx2k6#wK$`1N~1`EO3^;p{hX zO##=sjG+x-=%7KK9fSb`T>S?Qat*lU7Vn;oXW!1VZ(GT~Z@H*9 zSfH~PT^a+j~3~1 zXhQR_3G)zia!*9}yfgbr&p-7lZ-oNJ82z3aT5MP6#|z z=clLGOy~Q7Hh;a3^n2*JkQjr~h-W)x_Z#?e0b05lS}{)!Ky?7+0hhu6nh((OfXXm{ zYJvM1Gd@z}j@*1XHje&3nP<x@%jxL3g<1DpF896$8zo%J}j$O-#*Sh z{rkE44G49G4jQQL+|k}$g%|DP4CtrL2o-XUA`cg+)dDmpOnHE|FGLtXJA;G)#0L@| zaFM?d8JczY$Azq{ zh>WTzcCYpj-`})4G4K05*Xm4Z;MooMBNN;=bD%pB4_)>$=+Df9A#DKy)0e{d%SzPv zm9)abP&X+OjnZS$R9cLdk_GJ@7IcwB^mLffKh><_=$&5Q0Gg+G%&VoaSn;EeINcjG z6R_#MW`zR=t|~xtH$w}?(3&x{WgafT7Xzp-P(BZ+4hB5H823P~`_{)kD~z>7<~bY= z;%xrWL%e}jDecx2V@Gg9o_=hxT)Y(wtz#ssf$8@B#+-?hIB(JD^&c!rGkRB`|=UWZm|xEqddP zep%b*1r*c!>rdWTG2?_JAj)RKlhp5%1Uw>>hYydDvf0z`Q%vZdZbIASC^S3#-|_8p z?5ihdAN+BpyR;aS2!EGJ+DHa_8|=W z1qAGhhf!INp#6(c(;9|4yB45<9EHZ|v1p!5a}j2AOy$vCF`FU9B1ovWyq`;Q#@TmJm> z&$5)1l#;Dmw-&Gdcy&Qo*uuP-FV8$T{^9Z2Lx$X%)vNc-&OUv6JNxzT>kJL;=NiuGwh3I96F*KJ zYiEbLYqiW`Xv`QwD!~A%1+D}GMl+_rFVEe6M0EbG1G_tW_rA#)8rsJ>ZrlUeufP7v zxz(#z7Nn=Ao!2A#x17?lQs&IebRRi#q||1!mHhVGZ^fIx-dwbF>5_tZ^FGRb;f3eU zJ@n9n*|!ep3m?c2d^dKbD+W<$SoE)2360l%+B z;9s92C}}x@lcQ9fkoqZ+XnbHXnvr*q6ps#RW|a%c>B04s2-x< zDIyB0itXxtJwwd_YO)7LtY&D$7@AZQ1E?0LDi0t|a1>+ud-L2KMnvZi9n#ZDJ~g-A z8tUrbzn8O5pB~QP!*6pv_0)`j`^=d$Wd{!&C{0XE zDEWEoPeq$IZYW&7abw|xUFoHUv?BLq?F|?B@B!)#tnCZ3&qn<~lj$aYZW_W1Xvt?dp8}TAz*pR(A$hEP(rE3%H-=LU$kzx}%Gs zPqZN5Km?3gU%{C4DT0%uQF~tm>d7WFN+s_gGg_taXzwtgtBpr5*{td$-!7Xx{XoU6 zdZ#_+sROw6iin)*#CLVRhiU*>;Mj`~z00_UZVv_!7eKXuh5=Ra0hho4{atzPj>Dt# zN8aAkIqddEz~u5P;Xag-|o)a2KRGLoAPk>hws0g`^ow>1y*ZvNnv5( z{{$9fl`;128OCZ-{8xnm+P=`==7hD`fQo7X$^o=IfS&vLOkZ}IeYkb1n)9de{(1J3 zr)F%yV}h9-V*J(3_m3RbAON zawz%N4R8&=y}xV7pq|b_{ku8u96reP^plfw!WPWU`(*vhlr>8n`uYJ$;I=8n6$2Nk?DFOHW9O$H2=uRww{;wz)(iXya zXfcd?KSquHCe%t^hslGrJJA?XRdG4+wqVh)%@9w0%^~;)gamHXMJ9~bW3y`%W#$rJxdEO2=-pq5q(X!}A`3tSNf zXfuKu2GD#!39DUrlr7mjf~5*z4nJ{zQY6^#pABS%nacGJeBu%!8Dl-QnDyt!>vcK; z+?uA~PA>+x=UeF5d(b)NLjUJ`Fj%8KT4C1psIhwqYVKZyI!WPZkRhOPdOVs-o?WR9 zv^Q<#(MO5JK*fTgs&6Xo2WtI5kEb$eg_TzIe6Q};i3ivhQJW3v_dVn4x;=RS@qro! zXte;%2ofJay8_kN8PwmA=k7itGXH^*-JGOZai!Ni!~3}Iy!|HE9fLYMM-A)kdVK1b z?0N6KlDl?QY{9SFe<=Fn@WIluvVTvR;G$aKEMs-bV?cF%2G8#bP!6Eg0u=wm2bM6M zJD)x1h-WFW0e;K-Wgg5CSC5^w^4Bx=GZ|y6z1qE1?(tqJCS1=mi1vd9gUe&!w!aKr z(hJc4X9*0ynPAux4&y-!g7%payf+rLl0?)^jX}c<9!(u)gxCbMQ$%!@1@yG>=x;M) zh(!K@CfsKe@UTQ$VLYCYMJ!UxI8xpCuIl?}W`wTgFOOvPnxA2)%{*Lyh5NHx zL6?C6`rGo{Hw}--A9r^bCuvms;~F!vm+Ri4JzRI*+Sz&MkS@-tj||Ux|E*`wt%!@v z|Ig-63KRGJT73NIkuvu`3py~i$Gb4tqY(J}Dg+)`gCOfF)Z7(=I@U#~pAwG78Kf0Pz9@0%;1JNwWGz&tcShTg8&{^hjlft8~!-BzzfZ+;{(Tb?<2Tqkp zYhA#5vKdlU&-UtmUDF8oYEDnqy3GNGn#@xNP+#y0F~D$3p1beJMfp?5ba0X<-L<|Z zjK0Y=epENt*pVHb_YZ69oOs{O&R3rqlO6fdOS$V-L>2t>-%ksZ_irygawx4dC;R$v ziJ7I0y?w@83ut*jbufT9!M|w-FxKPL9=3I5OHb_ktL~2mJHG8%R$54pWxpTN?byLs zPBi;!?E~!iUzfGJQ=Ry(>U*yDAs*nH&fqdPfZMVWx*hLA_eD7L_81s`T7*DHIEz!HH3*of3n3awHlZibu1QIJ8O@z5PJ)4InO1z-`nIlz2Qq`++JKD5`nDYJctr z5*J8yz|664Geh0t3mBly2Q_D&T>;-(;1YYo0R!{gp?8MmKk;BY=d=fVsJ>L>O?ADl zsrPqxO&Zrkz`9nVa|DuT~W7-?^nYBQ?3?)L(y= zkuRd(?|#NSy}`4L)g?`Fy2{rAv^QMQ&Y*??>aGA|HHvfC{H@cNgKBj@#lDUDeQP?g zykivzHDCET%^2J1E_1I;O8V@%bLUocXW!1mH+6x zrzhnAJ-`((a2wY^Cp{1S!B3&z%_G1XhQO?iFe;y+hHWuwO4JWr;PDYpCcRKI+So;O zl1%7fgIav!OpJfV>-B|+}p-E zX;drcQ{#KM=FYl5#}fWx?x!mk1y{|5N0!?JD{6kfSv7%!#ssg1oE71+6!D z5e8^^KzZ!|&2yY~28%rUK{|ICyY0w#EFr#@8vA~!`)STkFtStoK47fus@AiJ$Fr9) z_YcnBKZ`qQUH8nP!)tr8oeS`vFZ9SP16X&cF`>ocjvYIy9lzC$^UA*OpExuV^kW-v zY%4hTIdCZ-LHAo6^l9-h{P76_GNNESycj_Vs}Y<;T47MKdCk&t*VBz#>taigJ4+cpkJPQ$ldev zXFb}&`NAWeUC%$#+4bDN?0WX$POhiNwRb%^wyo=l2UXK z3mZMI+wQb&Qm)VHQ5~ld>0996M>|+!MPbYwjJCrZNO1XXy=`G-ofXee~zO^k5(GD zmBsVre*T|2T_^|W3@(d-+w=)^Y%X*sMCi|c;^6|51Q?SxpvKN+sF}0~bx14lfCY{0 zg2y|^5sMD8N%amQz0g52kD(HeQL-6hB{L@3XdZz4R|Nc5G5fC{Nb#Q(Q-cld_YLEM z$~<*IJ;u<$%L&q)Fx3Jy8$f%*G$Tmb0i+|SX$RcISU{g#_s~)E^52@$-1+LHj;>e! zhpt(Vws*~((AM?R!>ye!j&JFF{-F@(%M;qUK6v5QEdITRb5=$_oBP@Fck;gfEGGZA zA3iR$?)kPTUHY~7aC&0N@gt6sGbaz1X1h+6<>zI)i;D`}q+dvf0%(3dV@+s3i0S}e zPEgAOv^inIfPBXE1tn~pZ5dNU&To0YOmhQEnz8JR&$Ym(Kah6xUCdp2(p_3`q^u}A zwK(T!V*ZI;zhwWuX+!pb&mzyIZJ3#9U;WUTl-Rz9{yVi^(h|TC4`jrGljgy&^*tEA zh=RW4L+HL)2c7F{aNC-KYoc1}{{4LW?YEa5&;Kj&-yXp3*5KGKa4a93{5Eu3r$fIb z5{6wC1nh{0F(V#9iLnTl1=LFBQP&=g1`YvDlvuP-%xFvfK#BGPMfA5@a4TsoO1zo_ zJZuv&jr_wT0bz=W16Aes)&07b11x)K1Z&##7y}rCkud}_hFZ)sBjlS8RD=ao6ZBy2 zJMLbT_ullTXWyLCo_t9Er?1&l+GoB#xn1UKliFmyIWq}yQ@(&I1->3Nui^g7H!`W|K>{SLE`{zq8b!4CK2hiByr zFV=TOKG(t(@&Dioe>TJw{!DY%qNkg=7Cqg>wdkqFuCS*XxfVUy$hGLHhOV$D8@i$& zuk8$by+_uApYet5B)dDrafF4W9cCfvhgrzM!z|>`VHR@aFl&D72y1=x0DEc2dn(`W zFV4^N-gCLKfaNw5rdgvg#TJ8ciV62f(HO48;1<%QvPPk&5{)iN0@^EaXn80WO>I$V zlpKS)`y)_W`UJtJHXulegKzY{*n6$O0a>^4wfm;F79}>&y8%aZJC=3t`J= zj$oGO?ql&U-s`zux|hYzyqCql?7e2)%i>@0Ua#KE=!$!7G+Q$JF80;?9ZPqF8H&k& z_W#@U%fg`IUltlKy0$Ges@IMM`r@C%gNr{|)~hUb<9#gt(|cL`#(P=(XZN!B&pnsr zt1)cl#-VKY;`;vK`+WCC1a60o=Vp_4C+YZ00>;V$?jfGpLAule`q)h9A&cl}HKUCp zA|#DRWBUR$u#wmO64bPRjvD7S!I-iJfeDKdaBMB~zdZ^4>W`r-rnC+P6q~_pqw}acT5<2-^=)N*Tzc&Jg?-wFaj)L*z8U)FoAeeA9Wj^Yq z$DmP$fTmUpS|*8TpDLn@UBJzXsQQTCCh@qFd;=5_6Kp(Y*i3jr;jz@8{Xn{3v|50) zLn$Y?l8bQU##QlaK+p85F28X7zOgUjq{Kt8@v85ns_7*OxQ{%1WD!GTv&X|n5zr;c zf_AExeGHlsKWz&`JuB_6tVHmUB?vkoz?iWL0f{j%{Ja?Y!(q@-t;cs+b*r)(n4mfA(!Z5MEdEMkzvqqm($ zx71j4RASM}E~0sc1&yUh)ZZVDI=?MP&BP6;VT*w=Eee6ouVHX~3VqQB(5+twT~UGO zUawBxU(tzVLZG9K`ARd zT%f!N^->n99>Ps!5iR$d(T+UT$X~@KAXFmlMZv=b+Qjp_0hG&`6ajzv`@XsH`!0^z z|JBz+7LhIqSSZo6UsQc($14Ix%OZv=q(3L3pCaHU(xsElXiK}P4gpPRPen1Iu0+rN zcm$^|LD0`8825_^*vG^0^AhNfhePKs1jiI`N+WR1uQ2dt&6)*=!{N8<-*Q?}4$u-@ z**S1)*Fbmfedw~6K%f0J45`rwl%iowT#p(_>rgW>8g*5&9CSLJ->!elX$T;r9ysOzS5gG-Y#4Mu zPl0~VJQ$QX1Z?ABbSy=Xyc{)ln@}q;8tQIWN7pQl{wFa?7P$nQfOjbN?E)st0>(+A$HRv_C}cDGI(YPO z5Z^4Qx^yAwCNxQ0h=$e$sB4Qut@PEXaqepvrF970V?n@=AHc9<3iM|eL07`S6{Lb| zSr6yu{BE2JhhCHx9Jm9N17v|Co;33v=yDcApSKW(j1Li*D#G~ZY6RKWAb4LKYTKew zpESc$1vHl|Xk{~_gQ^u~LNBX;ffA3~Wgd4q$d5(91j&RMHbM1hS}ltz-v3YDt2eOA zzwet}M2;jNPUZY~Oeeot)q7sVoi;OWQ_Kjpi@4ctMi(U>?d`E>nIWKAS_~Q`&qKX^ z5vZ-KNAS^=2+FX)m=uSA?NKm%7Y}{f9O%|8ht4g5%LoBim%9=FmpUzLf;*D|uAl&1 zb|iG$rb7SoTp0G55kR<_`wff-K1Pj{IMgKEl_SyMpc##+ADGCat!(n>g~~ko*ah68 z2pFdDxQD!$RezQkmD8PLH)HROIPz~C{SUvMKT14av6(Pk<}rylKbglU;*n+ZdCsr9 z-GYwRIJ9vrM)Lza8WRs~jX<5GrKp*@2|>9VU`(EeKzRiMPA!A}%NfwGTn$~}F>tvp zz)_8RJjH>U4a@$mLuq39E{dj1dz7% zwx!T#MnacI{k{xv2aMo?ucGe%|8nX9I1&hs9RPQ(7+hH#biX_X{h#sBJ60kfiTZ)- zVNCxTL4>>158Ss94eUG`JL1t?jz{ZM(g_jKP2tg7<}pwbal0(wE=9!sHW3qK0aGMF z^$yx{BmVzIv3Q;T7TFB9Y{o{3JS0d*R=^{w#~hD4CEkbgi$hn*j1IDZRy2DmN1>4| z9QBh;sFS=N!71wzlo|=+0TTlAw!m<1HS|a4Lbq-mbnFy3XKQe6xf{>^>Kq+_4ji~6 zZNafW!Lf7Taw4GHu@w4WVqi!T5%7CFjE7esh;Y{ygIWh8QTG7t28d{)#Gyrs8EqvI zozg_~P(+W1sBFeChe^%p#>zAkK<~GR1+s{v*ZaP^@xS-)z#LhGowQ=CCiQvnsO;_a zJ4AJUgm%jMICykV<}E70Z;Iq7)Y}(@ z+RDcW{)0F_0mk$X5ttVR19{xi9Q(R8(9yknx&ye595{Ne-8h$b4$(|N8n`n#;EH+Z z_AZD1w>TKAJOT)BkADv1p$({!5|5fv80x58poqq4B0^GVF58R_b^+a`X!KEd43q`j zF2~?5yNEHeXD;Ybg~ywA0rLOD`~Uwn=1C%UDk5H%1w2YKVzL=y&gcCi1}HpwWyGRe z#$t4k;?bHozjPjr)5B0dEfRI?OHea&6N0ig!)RTNz+@f)zr6*+-p8RY7NI+n>$!L7 z9=^Q0{>Gt0FIsmF+_A3U*imqwu7l3;9(1nd(C0#7%J0Tkf7>?JtFg%tOyVl5rsD};QtLKxFjB7G~*+a zZY1$Sg6b)CN2;jKkN0ty(8FOtMxbkz*n**H423I0Nm-r;~JKuyMB?bYu)dS4qUpk{SKg9YGPpsJ}z?o+7B4Vb9vl z{@)F_fhYe`JQ47fB;s+|tiJaT*ah5e7ctZ>;ueWVKSvCDrVHp|jYT`hVzf*rADU=1 zlEP6x#e~}X*CY7A8U$rW!kD-aff=h|_)~yB;VI}#K8Ef@qDR|??%gZD^KTq_@p=Q? zA2)k=fG;*cm-0MxXXBwy;$a}%J+uOW$5$iBu@W`*#GqC}ggO`4z#fAp=^~n^h-l-8 zMMuizBmun?L7nBeRiZji#67Zz2W%eQ!1rYlnKxqgUmCN1`nzNiM{$Z6YY}uT8yrgqcMRa@-n{_;SAPyr4sbKLKlXqt{203Ar=kDD1pR?kFeHZ| z@IVxd$s&UGEkvx~Tuo(r;oUTWW%=6uX(BZ+8{ zCZI`bG#c6$sPpm1jzk@61nMg$G|GrU zGl!t+1hljB>TFakUX(@r{%^Z)Z~Q&}!DPDyiHe9Py|aCH z({tZWdwm`a*jG*jIFxpli&}u=z z?gcQ|pM}2I4Beqja7+T{xDoq)KZF4pw}4~6gZusq==Q${-KiDOpA%s?vn{uFol3q^0y32WFCgUc&1>JY_?El?!j}E>O|JUTm zR0kx1OFsjy&xb(dY zV(93eq|Dgve{JfRyQv@GhhalH7b+;#Q?;-?jTLOc98T5%W zp!HljxA zYSdJC)UijPUQ#$3T4T^eCjS64S}7vhrN*Mufmn2P@E|?6J~q#uC+WM=&L`~+-buY7 zNx*1H#2AMK4@e@$$%5)N_=qH8g4#nCRGp}aiW!sao@=sVzH#~UHLzPS**mjIm^;z? zn$s=^>GM5I8V`1hI@|q#s{P30UYiM{tb(fBN4>ovgz=Jq&}8zEH{m9S8C~rnI(p~D zTON!>GlvCDtdVG#I1lv_B2atpYScXNEo%I^4#uQ-1pXF_0Gj~A(dE$Z{Sdk@S3;+3 z1;>ViqkHq(-T5~Tozav7+yjoC2Djro=uW%{-SIWh|02S$o4CMe1RjWl@#x1ermaE^ zDGs$V1k_Qy7$6JyzxJ*yHm>RnfA`+myu@2PStd^GIv7miLQ~uVZBT$#p+#Mgs9F_? zhd!XHeSu0{9=aq15**KZ@13z7XCVm?RRpO`=#E+7_v$LE3q|>YFPkd9VyH}a_tBmLUB-QM-k9bK zye-`arfT`MT8oe7VP7Sm(>_jvp7ScZ|Mgy7!58u=Y$dKJr=wF1C@Z&5HG2m&8JqM3 zZZeYCNHt?iqgX$iLQgh7iqKzd7oShxbAatgv_Kp<`MD1HC!6wLv?2qE_ZgrnmSUw#zgpY}oeRSLeTDEua^ z&*BKq?L#QP4~;Yi%*kk>`x*2&+aE|ZLspg2STn1jo7MwV%ek0Ff051%C2~n=Q?k=QpC*^R6BgRz*x6?jeO~D|YkJ8WhjMSI9tm z`9X*;{RU!X9)kHL2>0^X|G?~Pu*TcUpCRa1ApB(*;@=;Ic=iCKyaM0JC<5kg1m|N2 z%`$>=jxd@QfBn$c^u zG$Ms0R+@2y>FmhNPP9$YdVfEfDE3J^b8)7nz*G$WUnb#yVHCc}#~>a{LCpRYLgkMT zPVm_O!0kRjDBN$Iv7q-Z6$RpJKY%nBg``m~U>E^&6#iEZATYldA^i{P;VAa2YgKAwwXK$BTL_T5uoSF+yO{ec0jy53{fM^l`IW@oyY$*u|Lo{;J9^n z(DX5g6AwTvrXZbr4w9CH?ebD7@hCeTi2xy?8_i*$#Z zj8(;PL}<@Ur<$^#t3) zvz}r;r=o|rEGpgVwI_41)UMeTIcxNvN5!1d(eF92pTURN5kt!5G+R#q}V?h zg-^@CcP0tx^&di{=M24nqWh{yd!)f@B7Sao5DI@Zn4>zw8T9I-=w&rwGFWdY?EaDKv=sV`1p108^wIldT4&NbhGLqx ztM&o;O+{ZpuC}D*Q_9!Z8u^|$$d90x=4?iW&Fy>G{5}IZ`_)z6g9ve1vg-7QHM*lO zhK_uc<@Z}okDxg_hGy*u8qYqD&>PPobU{JT7(!rz_LZa|os}UKAAxl8K}fk@Lu9dk z9>V1ZAdm)mC|)xYo~AhftphGYn7s(`cpT!)w;&ZBfpkuWMEp&};Ma!`C}$8n|1^U0 z;|OIBp<(JE8fW8ZJ{3cY5k+fu812(hbZEoqG?EDC752VxWwoZrYAuOKp7w-~vHOR+ z3iKW^gSAE)>+%ZL{FW%M7~7w^`Zp zHTj%;PaM!4FlW+OQ^;UVNkxR}z|nKwh+-v;=VcY0xj2?jQ;nzu+Gb*Cors}jB97+C zr_h)`jE1=}7W;uKPqExFJJ+Kr@XaS76&{8(^AM!x6^K)3tv&vi?uYOVEB1N(Uqd@e z@n0JQ$`EGfApU+7;`DbR>EDBNJ_Tu3fzNyb{=!c9Pb3kXk0W^QFhcW3(J-?gjT3v( zq|@CkDq6G@T4x?d+tf~U%sheR**H39;s}=&gkOncg&||*9Mu|)VRb2uRcF#zT}&a8 zk0X+cA(BfWl2fgwD~OoXGKiR?yj_(K$Y%;7dexWAr{vq1C1hV#1-p4^E}s?T3YpuMmgZNzP149liuG@saurrZHE<_@BvydNRb#LPGXZ;io! zF#-SaB>b25Lb~{4NR!`zM4BRPk;W+R^i3Z79|}7PfW?0ZLggTYf4u|Y_-`S;_#=p= zhahU(AYIrGsq|C$-WY~&G6jF(F$7*ah~PhtAy_z!&`ZytVRjr1bhb-Z&@{ON%TDh? zOLhlZ^FwGml|Z|hM0;rn9a%b87-x4qc4kxPEUD-;;t10{FnMY*tFe2^V+hYj5uQ^J zo*P4WZj`ro4INWQH3m3&OTCZCh#DD(; z;_to>ku*ixB8@#Ag3$1PGVlN2`vCdR748G>1FiwC0j>eA0j>eA0j>eA0j>eA0j>eA z0j>eA0j>eA0j>eA0j>eA0j>eA0j>eA0j>eA0j>eA0j>eA0j>eA0j>eA0j>eA0j>eA z0j>eA0j>eA0j>eA0j>eA0j>eA0j>eA0j>eAfe(WQxP9c!<|wwX_@A=DNqIH?m%CiU*ulLu+_8I=KnHf~1UdeBi(p6ZRdGk}P|=x6 z#Ywzm40jM0GwSdB^(=y|-?Xbz`MP0x8Z>V;DNU;5f3_#p3J;(>7ey{P9}Ka zZqZBTg>&P^jT<*^A4T(+9|#`!V;;|c$>aHcj|cv3hqZal9`?X*c3D1=ZCNVrx_$vX zao6=x2;E+|>-sDNZ`_Sw>hDJIyTRQErv7d?tsvbAcE{VW#cloUiPPu15!{1quK1nU z=Dq-?6iQ9XHn!az7g!3%jX+xAyWx}}a3jDAryQdjL4>H=Hs&ZV|$A zyf%)l8B0Odey}l?LUnc^OR%`$RtnZRf~*XnGj1iYoN+6K?M$GR0d^#)njv;?B-r|Tj=06Ha|C(eRrgX3$kyt(1A+DY zuovz?Q2hmj7w$k{HGS$B!Bu)3Beae?5LD0qd*KcQ*68!bZ6ml&pF;%K>2V-%5pGLR zoj!*lb`fq%P@O)9A$AdNOJJQo2LkK#I1so9wLLs`15wi=Rdvz-kZnG=?ZWe%lA&W4JqnTk0@niG&(nmM3Nmh+Gk z4mhEi1EndJIi)yYN{VR?ID-lT-@^8NKlihq_xaZQ=eriH#ajIFySR??7|!#$h`n*$ z_`p8EJ^=xN16NJ1SPBU25#YZ?g#`ozFh|cs2?z-6LRuPM7AWrq&ho$VxMY4wK%f#U zw(TM$ARw^U-{dAzKtQ~e|K3INE4nQpz{|gS<&t$Ue1WsK(f6tiHDQU9j$EQQkKKBp z)^U8-o0m_rzxLKfD?Gd;EW0P7NM)bs^+!ec?362q_g)()YHSQRZshaisVLJk>dK|P zM%(?d$NsVyxYMg|0NofzGKq8A44raV!(81U&I2-&>4Jh>(+$Jh5E&&DD|%s%ZXps# z3iyBLm9A@)1>0FrP?~e|VtRGYdq#+Cb;2489Rw$mv+A1qGGyhtJvIz5*Qs5J5~CAH zBC5N$C$T5GH^^z2Dt{z8B&=~h8X5Vmve!e(RhHB16HN*m1|~)qEJeE@n?dMAc1w)H zqS#grZ??j(MD~6ESg&79NAVw2aa3)z-hx<`!D{gj_pm1+P8fqa-S5La?`1D{rA2nD zRQm?Cp1VsO?%L?`1=QC0r3X$R<(YmD>h^O66ROK5`m24}{e`SDs2_Tg1;uQ;KX}49 z%Kt4R?k#In{wAlt3}*W;lsde>$ZVax=zE`Yv~_e-s3 zy_qm1@*0;fqv64yxs4eqtLcBRl{#jWlc)Do>BYn1m+ZWgdi*6Xtr<}avUy+c{?gOE z-|7*0-LnB2!&!-ofYMVG4g>{MBbR{nHW!A#=^x^A*i8OE`Os zjQ;^yv=_uAT_0N&;xOBtS`^oOId^G6)h_JBvAaQq%aLKEWvQ^4q(IWL97d4ZR4s>vf){J&kgc^<+bPu`RHagyMpt;g(e@P5WeVvp&oFM9~}p9(Ir&Y zu#%q+Q){elqwcNT&h!8HQ9a7v7I9^z@)4c+UD9LuqdKU%a%!V#9f2c+qK>(Xf>;Wn zb;}PMMPpHuo6)9UVw4^&3NWjI&jdr%=ky3HE7nXT90H87UAZ|v#|Han9jZr#$sASR&vk{ z?6~LEi+NeWXx>W3ZGMqx+gtxeqZ$Mb=$fvKf#1jaHZ<62-KAk19xXme2N{Z z6hSXZiyLb$QGGU?zjwW7KQO=$mm@LM<#P_)lwr7;8J%nHtpf$2Znw%S$C}<23p%=cN^IHo9o0F z`o!+ByYHARD29pQP?ws1sGVx#R|Zpgd5aECq=7vi)s3z9XlnMbW;laP=?zqH-x7<> zFyI+Z6bA-qOFX}Il~V&wDRBa%OgDi*W*4f5a(w`Av+}IMk zt@^5N{S!NePI*@Yw_|=%2(h78IL|i}s8XP{C8TrVwq$oo4YsYP_kcsr5^phj0&2i+ zE-Rx$=AnMv&&I?O-u*B4_`o>jGlBQ{AH3@CgTvOo_e)U5U!$&4yX1y9#!{lS-m+sl zwuy5d634lMwjr}mL(D-Qz=QZLeE{V(ENX`;#I{3J{I?${ONU2O2;Cc1_M46+ZEGi| z-8$w4bQ!NZG>61_8-2bqdHN735tSG2-< zgXRKiqk_PJ#L!3Nx5(&V(Bj?`E_^)*W=IMf>ZZq3C0a#&A)b4my3Z|qgWto zq_w4Ws(j5pIHI^|AzltlkO{klYw}-#;iRh%9)~kNA}o^h61>)|(SitFK`M3flx14n z*D&*o3q#%R=594vck$u--)PeF%Jtjtk?#{mAEj_c^4>QS{RbIX(XbRu5H=T;Y)Pt0$pXSnUy}X>1k*ro z(_YGY=I`u5#bu67!aoYWqZc`V?Jyzi`9gkHNR84+IcX)t3?xtDBKSnv?r;DeRBHJs!k`Y$+ z@;-2~Jk_~Rmaa4!zW?-rS5b|Ywq*F!f!5^|6qV=}<~^TLJu!7r?-$XrHvmXdSoTQc z8`2%+`?WK5ut~ELqdthCa6`c=PTHt-A~- z9^}0XyJ}*9`7%ulz1%dExjFg#)Gz*a=vR3>=cA+_JkO}3ck6LC%SSiA_~&8nz8hWI ze#NyB1xb)>5ue34D;6(yg5l_P;@Di(%%A{dAYR3HQMa##qHwa$rj~P~fw|!4o@$ z3|afY&JU^~=JI`a%iac{EE1AmigTKmFZO!Tcwo#QMP)3>)YjqkP^$x@kZqI)%2SEY zXyD<^wJv@}!#f78UK&eQgf2u+T%DLM=T@RsR6s|Pzs0pjB9z0+-^>uKL;f~toHo$C zBb-pI@!RJdbXGVjna2qA@WAdGt`R$gIDnW@9(C@2`pDjAK`H@I!m?suljyj*IKf=$N~9n6mM356p+q=(nI*QvJiOoX!m0GyxeG4ZPwv&MwX24?1QVxgd1U> zpLjZ3*Qola5R}B@ZlX*m)=+wKcr>zr{69GS*>wV0Ce@Q?J#$x(FX_ypJBE34*d@Hz z5K9C$U7|Udv|j&5L*slc72WCK$I6h%T83!-0w-3>7wf9=OSh@R!LJedfH~rPba5QI z5Hq3bM3sjo6D%>OL?6ALGyK~!PL+euwKYxCid^?ziI|RRzcJpSNKc_?n;AHSUCp`f z<6FfwD;f0YK4w>9?t&VixrKzsi`4`s!*?`J(dP?}LS7N7lIc|IvAZQH`(9z&dBeE% z+%~hfYn&+!n&;i!0cIhvicRFZj>yPXAGfd@Q$t*mf6ZJxZAH9&1y{LT&-9=CpNLFw zT5AKphGXIiP0AK=$O48IrDvxwE@81Y`5*872sr*vRs7{=9@@HG=^}&nXc*;oCCEZH z#d(GNU>qjRjpwJKZgr*WU*8*}cm@r=YqKb-uI@tp==C38`&KRghyVeKGoCk@y_FF1 zG^5A1y4uR$xY#?D{O?f8wgEg&pNou`vL&=~VVE*vAG&JnyvGQ7T#10ZZ1&Tsx2O^a zvEhl1l!uCCdAlVH=%_-n{|4w6e%fTRDD9epeMp0YDFlhl^``we<~{Ozm2< zz`ie`3bevk4S0t zE_3~#TH)m(xUJZtndc0LZ01ot`~voqa^NXz{0@zc-HJRvaoSc^IT~~r@58`aKI4V= z{;c`hm^um0vO^(+fx*mx;K+uaf`@z-M;Ga8@k=J~5GIzo<={+aaN1Bqm_Sdz=f}eK zty}i4K9ekNZ<(P)#SU5ieEHW(ss!Wp5%q$>TOp>KNU$X&8ijoAle)lxj4LvC`TF0IGH&)EoW{qrc+QJyb^^_aL zKdy8ze@$4%sU{$rDxBAzeOxn2LaXTYhTkU4&IrB{-}*jzDwp9v7G)Pd*atA4ZptlV z9@QH{B&c@;1$Nhjnx)PEsj-Q^loyTY?(kSNBttCwZv{SeGxyXXZ(l)hc54N;G94OR znA2(8ayDIp^McpS7ns1vMFxLaryT=UO&idPjq5#`M;B`!n1^lrnIOhunHpvP6ngX< zp_iz0p8HwZEMx$*_uDP6H?Qf6!muFB~+jFxc3(|PbI2YgVO9}uMMl3YXgA-{dN46et zuyhvP?^nZ!RqNQg{ZpV!L9oINQp*fw_dn$M4`?8{WlfI;W0!p{4`z9hSzm8XAqYnr z7r$^%43>n>P>%aqR~JYY%?@n`_}K7F%%jLhLX`d~5=9N@-%UBP(db`znc6z^Y&+I( zJDS(bZ+|cTLN9?6Y5tSg%?HMlraYqfgI?6u63gaM+XKd~k8Ttp6e6Wpra!y)HS6!F zR#zLWMnVPgf_%gYYz-7KQ^EaLs6DFo*?WaFW0hvdAZ_4r(nVhJ%;!FDGbCMa`nKdc z&B=dOe+}<)4s1TwC`C`9nAq%I$Et@s-9J_s)6B+?IuxQOc7q@+$Tv7C0BHPI!xBGe z3Y{e`ru#Ctpb`(h`Yo^*b89yAqok-RAQ?%S60#WE3&JoJj@fY}#S(LfbWxX6T;Y>J z{I$F!tD|B&>50JoC(03!(d+N*UJ7?!A|+Shg32&&+o*>_H4>yCl2fq<*P>lE^*6Je z-_5QcAZ~v=RL8a6r_EnMRT!QIPBeJ8J!R04pxCq2punANb|`ET$*RaUl8BiWLLp|( zCBSsyrZ4RxKiM%qW~=^+nyYTa6+W!h{CiYhucW=L27#JRa(pRb^qeR<;`>Gop3=gw z%~X@hE1km+Vy4oj6#Q(OKHxHIIBNJm%On;2idC1?(gD$n58mhSwl@5lR_R>3JwQ@G z`|S-lKWRd@@f?m%7P;#VXpzm`<+YS^nREURh0#2br=1jJ`G6DMGxB@wL(ajE?}o0_b4tsGONzD zTRT+Dz*>{U)=!#TT<-G?V;|7+9b4vYL50AHwCzK`GMB)K$l%SU3B9pFW*wt?1lc+m za`B>sk`-uL@tkdmG}9Y?K8dP*e0*~ET+FcLbM)Dy*`ywGeo~onkI45JA3wOg6xsl~?^jvhnrxmn4ZoSqu)G+v zC<36!tV_CfQj{gSWqV88syGu!pYefA@Nv7J5g*+U2gX5!JPx2K)z;NL;To?4M(9f3uI;;W*}S$*+I~ZnVT*KR@0lCL@bQhJ?|N`kGukN(vDFGtVQE2JViSsghkB z_DN@yp{N+|p^XP7VHpCjV65wH+2&hsgT(uL2i3N6mqUv)^7^_p35@%1;p!^-UsHO3Y?M;@2j_=_mvI@gaAD^#^oJaCfa$< zqY%S{!UGmCg-wYxa7^R^cOIOG%&uP;$ZJrnmR>jDeO;a;CNnSWsoC_s`PFzQT>UYr zhiK;GC9Yfh>%Z_)$vg%l?reyn$vBMjnB(tjS(2$%2G^g@K*Ud%{D&u;$E+i>ab2rm z4Rc(K`rw3DgssCD+31P6aw_)?WQ3JNU3CWh0(ZOo)xf)uNCSe$^?>tnpR{RPEM9VkaH_@_jx5UbJ%mxH5_B3xL_AD zndJCV(_ntb!s(uvD7g*Xw_Dn8jPfzJZRjwbNgU*@^cs$1DO-$q$W1;0-9ry%tep=B zZ}&ibeR|MaQ0RKr^)NnUz>%h&0N~7rW!bDI)Ps4XbMHoLTx;24kQaWpzL+29*agDg z9o;Dr3*Of$`*A)$NIaIj-WPtw6ZrFvDn*Haw8z+A{B(^rje_YIS|b4zSZ03twWwK} z8J}ZKS9Mhp$UJg613RFeR43K+r2Tm5!5L&G3*_>>t$gD zMxA@54D)vG_(?eMR-n;#PP06n4*}^>mxFjnAZaA!D<+L+ z2$e9c-K=BFzhqtz9smg@x44GH{-Z&aUpx1(VA#sRD$UN4kf$}9ll-od_~lT{6t3pT zzdLN%-?IE!{WM4M3|owCgX~;Ka1m&!0rg_JZ}u^TLNNLXiDIXNuC3>`@qcX1_Ka;7 zYjNAWeK$r9^Lx0I_(gsMV@G%5FBYbaEgEu4c})L{4W^WN^>d8NdV+3*P!|ZjuM(;-?}e{EMlcM2>!l$7P}NoPg6#ZRLm)*?Vu6~Dn#klpS{y@@5TKr-lzbTA9a~&O`H5wlB&O%qaag)tK9LP4@IB6u^TI`gYaBBWdctFv0 z#7r-G0!e>lIV22_%xuV>JJoyMx7oSuBRfB6&rU4zI*3umPmkr=4g6pWB>)Jj-WbLu^xVZ z3be}%4IlCecZSRpkI@4L_rUJgDQEw7+kP~qQL+(^m`SoP(WBduMftPn0noag_rV<) zolD9x`kmIKCpeZDDMZ{q`dykUX)(K-{z|o_a%f#p11hKk-96s$<-uJt*?0rg; z5g9JQ&O;jz7OC2ftHnF^At1f!5feQRPOL_k>u}zdXK`*(HzclyrE5e=5dst(9QGT- zTwfX9r%&wBHTG=c9}pleywa|W_qfDQX?}5qCO*wGNseU_PX}qg19hW~in*L+!=v`s!uht|InqI>ztnl%L{WdB2mai9s&*o6 z;q*@T&bzfO%cb@|;H2a?b)W66DoPlT>XnqS8nj|h^1W6qqIuBmcw9faIHOe^7XBYP zNgU2XKqs+3$&C){1-(TUvemXb-KfNDTO(qJ|Jj(gpATKSI9?EPm3|Q51~6^mxI*9moyjY{T{;U-nsmoD7y3y_h3ub zZt5O?COo;8_0w}Z=QnaCq2HKw!MW;NyF=7%8Pa+ls+ZHUCR#^FNAX-zk8k6O0fbC_ z#^e(ZKnP2vfxAP&0bO@Co)|+4v%28p436$MxJSw*u|eo>w-5rL1*@2G$IIu*rZ%XGGlpg5PFMTHV7qL+x9vFB z9^Tbp=(lf&a=+WeB>3BckQ2Hpy$G!klN|tGz*NA_icJ%46Fi<3rgcGy%6ZQ%sOb*? zdiZ>`{B$nl@>-ZfqcZSfCu%N>N7u7e0sqcXuftM zW1u^S(=tObfI7)~UI|`|JT)EDvQeTDOdOC>sE5fPE+h4!$3X;2h}FChOx*}++xLVW zx7N9_o1O|G2+uo{#cr#Pg9wu3|De0XRG)nuQG>M=x6H!_ZeIcU#Tl(E^8IY|6ASasV5z^Lj*vVl8k+!^P|K$%UA{+l`#n?6 z!alZ)E7slBRID3-V4Y!$d1`p>|6j@f0#=605*>w44>FCTC+7MKp_nCk;`A?`Nf?k6 zVC#CHiUg8Wky{DQy*|LO5Go_(K8hc@!xAbwu4r*ywITPk4>O-tWHGHkHQN6uH(E+8 z%V8Stg%%{pQ1OF5I6H@Ts2eqM#=l3+=4H~JeKK7)4Ha|0d1wPLmC)&^DKgU-7aC!s zo5M}UQJ=~cewOd()Oj1UH$gQ)$Q*sl`XT}O&?x>u#PVGfvJTbBTU)ftV&w1>l-KWN zS|Gdp;SWODZ1%{)Xv^Tp#fuqD*L+lEFNu+#xL3Z{cLIf%>&7Rw1EsXWb`cb7vfOnJ zgCD@m1*wo&(7qj?yMGX)W7}svFJwDdw2m#RQM{ezjU&6u#^ITlwMI)1PJ43$kI@lMc#fF#xAF$|CtVEqX)yU`(*Mcv>KCE}7t z-!^r_PbeSnJAnE581aZStjQl48UD+EeHLzHF|63fvm9m$=iV≥RtmlX1-0BuB>U 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 F{{f|OXlVcd diff --git a/server-console/resources/console-beta.icns b/server-console/resources/console-beta.icns index 1fe162f88eb5f4b4bfbdbbabfc3910ec9a3adb40..9044dbfbf78f73abc1170ca0b1570f8d9124343d 100644 GIT binary patch literal 154826 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%0A88b3Nq^zJ=>CXl;(6i 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