From 3189cb90e43f431bd99fb01503160c4ec9660156 Mon Sep 17 00:00:00 2001 From: "rick@ghostpunch.com" Date: Tue, 25 Jul 2017 15:20:11 -0400 Subject: [PATCH 01/14] Address bug #21448 "Correctly Size Bounding Boxes for Polylines" Changed PloyLineEntity code to calculate the scale vector (which PolyLineEntity uses as the bouding box) and the registration point (the offset of the bounding box from the first point in the Polyline) based on the points in the PolyLineEntity so the bounding box is just big enough to contain all the points in the line. --- libraries/entities/src/EntityItem.h | 2 +- libraries/entities/src/PolyLineEntityItem.cpp | 77 +++++++++++++++---- libraries/entities/src/PolyLineEntityItem.h | 9 ++- 3 files changed, 71 insertions(+), 17 deletions(-) diff --git a/libraries/entities/src/EntityItem.h b/libraries/entities/src/EntityItem.h index 92c83651aa..062f9cb2ed 100644 --- a/libraries/entities/src/EntityItem.h +++ b/libraries/entities/src/EntityItem.h @@ -262,7 +262,7 @@ public: glm::vec3 getRegistrationPoint() const; /// registration point as ratio of entity /// registration point as ratio of entity - void setRegistrationPoint(const glm::vec3& value); + virtual void setRegistrationPoint(const glm::vec3& value); bool hasAngularVelocity() const { return getAngularVelocity() != ENTITY_ITEM_ZERO_VEC3; } bool hasLocalAngularVelocity() const { return getLocalAngularVelocity() != ENTITY_ITEM_ZERO_VEC3; } diff --git a/libraries/entities/src/PolyLineEntityItem.cpp b/libraries/entities/src/PolyLineEntityItem.cpp index c1f6508a76..e8cce8b4e6 100644 --- a/libraries/entities/src/PolyLineEntityItem.cpp +++ b/libraries/entities/src/PolyLineEntityItem.cpp @@ -92,13 +92,12 @@ bool PolyLineEntityItem::appendPoint(const glm::vec3& point) { qCDebug(entities) << "MAX POINTS REACHED!"; return false; } - glm::vec3 halfBox = getDimensions() * 0.5f; - if ((point.x < -halfBox.x || point.x > halfBox.x) || (point.y < -halfBox.y || point.y > halfBox.y) || (point.z < -halfBox.z || point.z > halfBox.z)) { - qCDebug(entities) << "Point is outside entity's bounding box"; - return false; - } + _points << point; _pointsChanged = true; + + calculateScaleAndRegistrationPoint(); + return true; } @@ -141,23 +140,71 @@ bool PolyLineEntityItem::setLinePoints(const QVector& points) { return; } - for (int i = 0; i < points.size(); i++) { - glm::vec3 point = points.at(i); - glm::vec3 halfBox = getDimensions() * 0.5f; - if ((point.x < -halfBox.x || point.x > halfBox.x) || - (point.y < -halfBox.y || point.y > halfBox.y) || - (point.z < -halfBox.z || point.z > halfBox.z)) { - qCDebug(entities) << "Point is outside entity's bounding box"; - return; - } - } _points = points; + + calculateScaleAndRegistrationPoint(); + result = true; }); return result; } +void PolyLineEntityItem::calculateScaleAndRegistrationPoint() { + glm::vec3 high(0.0f, 0.0f, 0.0f); + glm::vec3 low(0.0f, 0.0f, 0.0f); + for (int i = 0; i < _points.size(); i++) { + glm::vec3 point = _points.at(i); + + if (point.x > high.x){ + high.x = point.x; + } + else if (point.x < low.x) { + low.x = point.x; + } + + if (point.y > high.y){ + high.y = point.y; + } + else if (point.y < low.y) { + low.y = point.y; + } + + if (point.z > high.z){ + high.z = point.z; + } + else if (point.z < low.z) { + low.z = point.z; + } + } + + if (_points.size() > 1) { + // if all the points in the Polyline are at the same place in space, use default dimension settings + if ((low - high).length() < 0.00001f) { + SpatiallyNestable::setScale(glm::vec3(1.0f, 1.0f, 1.0f)); + EntityItem::setRegistrationPoint(glm::vec3(0.0f, 0.0f, 0.0f)); + return; + } + + glm::vec3 result; + result.x = abs(high.x) + abs(low.x); + result.y = abs(high.y) + abs(low.y); + result.z = abs(high.z) + abs(low.z); + SpatiallyNestable::setScale(result); + + glm::vec3 point = _points.at(0); + glm::vec3 startPointInScaleSpace = point - low; + glm::vec3 newRegistrationPoint = startPointInScaleSpace / result; + EntityItem::setRegistrationPoint(newRegistrationPoint); + } + else { + // if Polyline has only one or fewer points, use default dimension settings + SpatiallyNestable::setScale(glm::vec3(1.0f, 1.0f, 1.0f)); + EntityItem::setRegistrationPoint(glm::vec3(0.0f, 0.0f, 0.0f)); + return; + } +} + int PolyLineEntityItem::readEntitySubclassDataFromBuffer(const unsigned char* data, int bytesLeftToRead, ReadBitstreamToTreeParams& args, EntityPropertyFlags& propertyFlags, bool overwriteLocalData, diff --git a/libraries/entities/src/PolyLineEntityItem.h b/libraries/entities/src/PolyLineEntityItem.h index ed161762fc..eca9a1ec79 100644 --- a/libraries/entities/src/PolyLineEntityItem.h +++ b/libraries/entities/src/PolyLineEntityItem.h @@ -81,10 +81,17 @@ class PolyLineEntityItem : public EntityItem { BoxFace& face, glm::vec3& surfaceNormal, void** intersectedObject, bool precisionPicking) const override { return false; } + // disable these external interfaces as PolyLineEntities caculate their own dimensions based on the points they contain + virtual void setRegistrationPoint(const glm::vec3& value) override {}; + virtual void setScale(const glm::vec3& scale) override {}; + virtual void setScale(float value) override {}; + virtual void debugDump() const override; static const float DEFAULT_LINE_WIDTH; static const int MAX_POINTS_PER_LINE; - +private: + void calculateScaleAndRegistrationPoint(); + protected: rgbColor _color; float _lineWidth; From 0c03b4ec53bd799eed02681c3805d24702612bcf Mon Sep 17 00:00:00 2001 From: "rick@ghostpunch.com" Date: Tue, 25 Jul 2017 16:37:40 -0400 Subject: [PATCH 02/14] Use fabsf() instead of abs() so Clang doesn't default to int abs() --- libraries/entities/src/PolyLineEntityItem.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/libraries/entities/src/PolyLineEntityItem.cpp b/libraries/entities/src/PolyLineEntityItem.cpp index e8cce8b4e6..c698e6d5dd 100644 --- a/libraries/entities/src/PolyLineEntityItem.cpp +++ b/libraries/entities/src/PolyLineEntityItem.cpp @@ -177,19 +177,19 @@ void PolyLineEntityItem::calculateScaleAndRegistrationPoint() { low.z = point.z; } } - + const float EPSILON = 0.0001f; if (_points.size() > 1) { // if all the points in the Polyline are at the same place in space, use default dimension settings - if ((low - high).length() < 0.00001f) { + if ((low - high).length() < EPSILON) { SpatiallyNestable::setScale(glm::vec3(1.0f, 1.0f, 1.0f)); EntityItem::setRegistrationPoint(glm::vec3(0.0f, 0.0f, 0.0f)); return; } glm::vec3 result; - result.x = abs(high.x) + abs(low.x); - result.y = abs(high.y) + abs(low.y); - result.z = abs(high.z) + abs(low.z); + result.x = fabsf(high.x) + fabsf(low.x); + result.y = fabsf(high.y) + fabsf(low.y); + result.z = fabsf(high.z) + fabsf(low.z); SpatiallyNestable::setScale(result); glm::vec3 point = _points.at(0); From 3e2dbe58ec06a6add7b9e767e20ae3f81a4348c6 Mon Sep 17 00:00:00 2001 From: "rick@ghostpunch.com" Date: Thu, 27 Jul 2017 16:39:49 -0400 Subject: [PATCH 03/14] Style guide corrections --- libraries/entities/src/PolyLineEntityItem.cpp | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/libraries/entities/src/PolyLineEntityItem.cpp b/libraries/entities/src/PolyLineEntityItem.cpp index c698e6d5dd..61d5dd22ee 100644 --- a/libraries/entities/src/PolyLineEntityItem.cpp +++ b/libraries/entities/src/PolyLineEntityItem.cpp @@ -158,22 +158,19 @@ void PolyLineEntityItem::calculateScaleAndRegistrationPoint() { if (point.x > high.x){ high.x = point.x; - } - else if (point.x < low.x) { + } else if (point.x < low.x) { low.x = point.x; } if (point.y > high.y){ high.y = point.y; - } - else if (point.y < low.y) { + } else if (point.y < low.y) { low.y = point.y; } if (point.z > high.z){ high.z = point.z; - } - else if (point.z < low.z) { + } else if (point.z < low.z) { low.z = point.z; } } @@ -196,12 +193,10 @@ void PolyLineEntityItem::calculateScaleAndRegistrationPoint() { glm::vec3 startPointInScaleSpace = point - low; glm::vec3 newRegistrationPoint = startPointInScaleSpace / result; EntityItem::setRegistrationPoint(newRegistrationPoint); - } - else { + } else { // if Polyline has only one or fewer points, use default dimension settings SpatiallyNestable::setScale(glm::vec3(1.0f, 1.0f, 1.0f)); EntityItem::setRegistrationPoint(glm::vec3(0.0f, 0.0f, 0.0f)); - return; } } From a730da5299cccb8606c5078eceed7f6f648a72bd Mon Sep 17 00:00:00 2001 From: "rick@ghostpunch.com" Date: Wed, 9 Aug 2017 04:23:39 -0400 Subject: [PATCH 04/14] Account for PloyLine stroke width when calculating the dimensions of the PolyLilne's bounding box. --- libraries/entities/src/PolyLineEntityItem.cpp | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/libraries/entities/src/PolyLineEntityItem.cpp b/libraries/entities/src/PolyLineEntityItem.cpp index 61d5dd22ee..90e0a18a3f 100644 --- a/libraries/entities/src/PolyLineEntityItem.cpp +++ b/libraries/entities/src/PolyLineEntityItem.cpp @@ -182,15 +182,27 @@ void PolyLineEntityItem::calculateScaleAndRegistrationPoint() { EntityItem::setRegistrationPoint(glm::vec3(0.0f, 0.0f, 0.0f)); return; } + + // Find the max width of the strokes so we can account for that in the size of the bounding box + float maxWidth = 0.0f; + for (int i = 0; i < _strokeWidths.size(); ++i) { + if (_strokeWidths.at(i) > maxWidth) { + maxWidth = _strokeWidths.at(i); + qCDebug(entities) << "TTTTT " << maxWidth; + } + } glm::vec3 result; - result.x = fabsf(high.x) + fabsf(low.x); - result.y = fabsf(high.y) + fabsf(low.y); - result.z = fabsf(high.z) + fabsf(low.z); + float halfLineWidth = (maxWidth > 0.0f) ? maxWidth * 0.5f : 0.0f; + result.x = fabsf(high.x) + fabsf(low.x) + halfLineWidth; + result.y = fabsf(high.y) + fabsf(low.y) + halfLineWidth; + result.z = fabsf(high.z) + fabsf(low.z) + halfLineWidth; SpatiallyNestable::setScale(result); + // Center the poly line in the bounding box glm::vec3 point = _points.at(0); glm::vec3 startPointInScaleSpace = point - low; + startPointInScaleSpace += glm::vec3(halfLineWidth * 0.5f); glm::vec3 newRegistrationPoint = startPointInScaleSpace / result; EntityItem::setRegistrationPoint(newRegistrationPoint); } else { From cc69853ff1327a3154bdaf552ba918813dee6d82 Mon Sep 17 00:00:00 2001 From: "rick@ghostpunch.com" Date: Wed, 9 Aug 2017 04:37:47 -0400 Subject: [PATCH 05/14] Make requested style changes to code. --- libraries/entities/src/PolyLineEntityItem.cpp | 82 +++++++++---------- 1 file changed, 41 insertions(+), 41 deletions(-) diff --git a/libraries/entities/src/PolyLineEntityItem.cpp b/libraries/entities/src/PolyLineEntityItem.cpp index 90e0a18a3f..e5050a303a 100644 --- a/libraries/entities/src/PolyLineEntityItem.cpp +++ b/libraries/entities/src/PolyLineEntityItem.cpp @@ -96,7 +96,7 @@ bool PolyLineEntityItem::appendPoint(const glm::vec3& point) { _points << point; _pointsChanged = true; - calculateScaleAndRegistrationPoint(); + calculateScaleAndRegistrationPoint(); return true; } @@ -142,7 +142,7 @@ bool PolyLineEntityItem::setLinePoints(const QVector& points) { _points = points; - calculateScaleAndRegistrationPoint(); + calculateScaleAndRegistrationPoint(); result = true; }); @@ -151,37 +151,37 @@ bool PolyLineEntityItem::setLinePoints(const QVector& points) { } void PolyLineEntityItem::calculateScaleAndRegistrationPoint() { - glm::vec3 high(0.0f, 0.0f, 0.0f); - glm::vec3 low(0.0f, 0.0f, 0.0f); - for (int i = 0; i < _points.size(); i++) { - glm::vec3 point = _points.at(i); + glm::vec3 high(0.0f, 0.0f, 0.0f); + glm::vec3 low(0.0f, 0.0f, 0.0f); + for (int i = 0; i < _points.size(); i++) { + glm::vec3 point = _points.at(i); - if (point.x > high.x){ - high.x = point.x; - } else if (point.x < low.x) { - low.x = point.x; - } + if (point.x > high.x) { + high.x = point.x; + } else if (point.x < low.x) { + low.x = point.x; + } - if (point.y > high.y){ - high.y = point.y; - } else if (point.y < low.y) { - low.y = point.y; - } + if (point.y > high.y) { + high.y = point.y; + } else if (point.y < low.y) { + low.y = point.y; + } - if (point.z > high.z){ - high.z = point.z; - } else if (point.z < low.z) { - low.z = point.z; - } - } - const float EPSILON = 0.0001f; - if (_points.size() > 1) { - // if all the points in the Polyline are at the same place in space, use default dimension settings - if ((low - high).length() < EPSILON) { - SpatiallyNestable::setScale(glm::vec3(1.0f, 1.0f, 1.0f)); - EntityItem::setRegistrationPoint(glm::vec3(0.0f, 0.0f, 0.0f)); - return; - } + if (point.z > high.z) { + high.z = point.z; + } else if (point.z < low.z) { + low.z = point.z; + } + } + const float EPSILON = 0.0001f; + if (_points.size() > 1) { + // if all the points in the Polyline are at the same place in space, use default dimension settings + if ((low - high).length() < EPSILON) { + SpatiallyNestable::setScale(glm::vec3(1.0f, 1.0f, 1.0f)); + EntityItem::setRegistrationPoint(glm::vec3(0.5f)); + return; + } // Find the max width of the strokes so we can account for that in the size of the bounding box float maxWidth = 0.0f; @@ -192,24 +192,24 @@ void PolyLineEntityItem::calculateScaleAndRegistrationPoint() { } } - glm::vec3 result; + glm::vec3 result; float halfLineWidth = (maxWidth > 0.0f) ? maxWidth * 0.5f : 0.0f; result.x = fabsf(high.x) + fabsf(low.x) + halfLineWidth; result.y = fabsf(high.y) + fabsf(low.y) + halfLineWidth; result.z = fabsf(high.z) + fabsf(low.z) + halfLineWidth; - SpatiallyNestable::setScale(result); + SpatiallyNestable::setScale(result); // Center the poly line in the bounding box - glm::vec3 point = _points.at(0); - glm::vec3 startPointInScaleSpace = point - low; + glm::vec3 point = _points.at(0); + glm::vec3 startPointInScaleSpace = point - low; startPointInScaleSpace += glm::vec3(halfLineWidth * 0.5f); - glm::vec3 newRegistrationPoint = startPointInScaleSpace / result; - EntityItem::setRegistrationPoint(newRegistrationPoint); - } else { - // if Polyline has only one or fewer points, use default dimension settings - SpatiallyNestable::setScale(glm::vec3(1.0f, 1.0f, 1.0f)); - EntityItem::setRegistrationPoint(glm::vec3(0.0f, 0.0f, 0.0f)); - } + glm::vec3 newRegistrationPoint = startPointInScaleSpace / result; + EntityItem::setRegistrationPoint(newRegistrationPoint); + } else { + // if Polyline has only one or fewer points, use default dimension settings + SpatiallyNestable::setScale(glm::vec3(1.0f, 1.0f, 1.0f)); + EntityItem::setRegistrationPoint(glm::vec3(0.5f)); + } } int PolyLineEntityItem::readEntitySubclassDataFromBuffer(const unsigned char* data, int bytesLeftToRead, From 87139f5d822e197097905502079d4c8734395a52 Mon Sep 17 00:00:00 2001 From: "rick@ghostpunch.com" Date: Wed, 9 Aug 2017 04:46:42 -0400 Subject: [PATCH 06/14] Remove debug print --- libraries/entities/src/PolyLineEntityItem.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/libraries/entities/src/PolyLineEntityItem.cpp b/libraries/entities/src/PolyLineEntityItem.cpp index e5050a303a..4d27330b3e 100644 --- a/libraries/entities/src/PolyLineEntityItem.cpp +++ b/libraries/entities/src/PolyLineEntityItem.cpp @@ -188,7 +188,6 @@ void PolyLineEntityItem::calculateScaleAndRegistrationPoint() { for (int i = 0; i < _strokeWidths.size(); ++i) { if (_strokeWidths.at(i) > maxWidth) { maxWidth = _strokeWidths.at(i); - qCDebug(entities) << "TTTTT " << maxWidth; } } From 8d248f5ccd2763859c8964847db37cdcbc567bf1 Mon Sep 17 00:00:00 2001 From: "rick@ghostpunch.com" Date: Mon, 14 Aug 2017 15:59:21 -0400 Subject: [PATCH 07/14] Remove the attempt to determine the maximum width of a PolyLineEntity's strokes using the _strokeWidths[] array, as the values don't seem to correspond with reality. Use a flat 0.075M value for the maxium half of a stroke width instead. --- libraries/entities/src/PolyLineEntityItem.cpp | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/libraries/entities/src/PolyLineEntityItem.cpp b/libraries/entities/src/PolyLineEntityItem.cpp index 4d27330b3e..aa31130c82 100644 --- a/libraries/entities/src/PolyLineEntityItem.cpp +++ b/libraries/entities/src/PolyLineEntityItem.cpp @@ -182,17 +182,9 @@ void PolyLineEntityItem::calculateScaleAndRegistrationPoint() { EntityItem::setRegistrationPoint(glm::vec3(0.5f)); return; } - - // Find the max width of the strokes so we can account for that in the size of the bounding box - float maxWidth = 0.0f; - for (int i = 0; i < _strokeWidths.size(); ++i) { - if (_strokeWidths.at(i) > maxWidth) { - maxWidth = _strokeWidths.at(i); - } - } glm::vec3 result; - float halfLineWidth = (maxWidth > 0.0f) ? maxWidth * 0.5f : 0.0f; + const float halfLineWidth = 0.075f; // sadly _strokeWidths() don't seem to correspond to reality, so just use a flat assumption of the stroke width result.x = fabsf(high.x) + fabsf(low.x) + halfLineWidth; result.y = fabsf(high.y) + fabsf(low.y) + halfLineWidth; result.z = fabsf(high.z) + fabsf(low.z) + halfLineWidth; From f54e028c19bea0478b2e127474e2af7bedc6f701 Mon Sep 17 00:00:00 2001 From: EagleJumpDev Date: Wed, 16 Aug 2017 22:16:50 -0700 Subject: [PATCH 08/14] Out of memory errors detected on systems with only 6GB of main memory. Maybe 8GB should be the minimimum? --- BUILD_WIN.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BUILD_WIN.md b/BUILD_WIN.md index 3e93656d45..1a33088237 100644 --- a/BUILD_WIN.md +++ b/BUILD_WIN.md @@ -3,7 +3,7 @@ This is a stand-alone guide for creating your first High Fidelity build for Wind ## Building High Fidelity Note: We are now using Visual Studio 2017 and Qt 5.9.1. If you are upgrading from Visual Studio 2013 and Qt 5.6.2, do a clean uninstall of those versions before going through this guide. -Note: The prerequisites will require about 10 GB of space on your drive. +Note: The prerequisites will require about 10 GB of space on your drive. You will also need a system with at least 8GB of main memory. ### Step 1. Visual Studio 2017 From 5f162c03520428b5ac829be5a06ae9748288b387 Mon Sep 17 00:00:00 2001 From: Midnight Date: Fri, 18 Aug 2017 15:10:58 -0700 Subject: [PATCH 09/14] Change emitShouldTrail to emitterShouldTrail. --- scripts/system/particle_explorer/particleExplorer.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/system/particle_explorer/particleExplorer.js b/scripts/system/particle_explorer/particleExplorer.js index ca6a873b73..057bd1dd85 100644 --- a/scripts/system/particle_explorer/particleExplorer.js +++ b/scripts/system/particle_explorer/particleExplorer.js @@ -178,8 +178,8 @@ type: "Row" }, { - id: "emitShouldTrail", - name: "Emit Should Trail", + id: "emitterShouldTrail", + name: "Emitter Should Trail", type: "Boolean" }, { From 099723fe4dadb15497abf2a6b25e10afa8942320 Mon Sep 17 00:00:00 2001 From: Ken Cooke Date: Sun, 20 Aug 2017 13:49:26 -0700 Subject: [PATCH 10/14] Use RAII to avoid deletion of extended argv while in use --- interface/src/main.cpp | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/interface/src/main.cpp b/interface/src/main.cpp index 084e540ff4..503daa177d 100644 --- a/interface/src/main.cpp +++ b/interface/src/main.cpp @@ -216,17 +216,12 @@ int main(int argc, const char* argv[]) { SandboxUtils::runLocalSandbox(serverContentPath, true, noUpdater); } - // to enable WebGL rendering - char* additionalCommandLineArg = (char*)"--ignore-gpu-blacklist"; - int newArgc = argc + 1; - char** newArgv = new char*[newArgc]; - for (int i = 0; i < argc; ++i) { - newArgv[i] = (char*)argv[i]; - } - newArgv[argc] = additionalCommandLineArg; + // Extend argv to enable WebGL rendering + std::vector argvExtended(&argv[0], &argv[argc]); + argvExtended.push_back("--ignore-gpu-blacklist"); + int argcExtended = (int)argvExtended.size(); - Application app(newArgc, const_cast(newArgv), startupTime, runningMarkerExisted); - delete[] newArgv; + Application app(argcExtended, const_cast(argvExtended.data()), startupTime, runningMarkerExisted); // If we failed the OpenGLVersion check, log it. if (override) { From 1eb7fb5b3d0b6e32f86b59aca0508d1decf6e702 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Mon, 21 Aug 2017 17:15:44 -0700 Subject: [PATCH 11/14] always write rank ID to variant when present --- libraries/networking/src/NodePermissions.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/libraries/networking/src/NodePermissions.cpp b/libraries/networking/src/NodePermissions.cpp index cc5df515aa..e94c43b6fb 100644 --- a/libraries/networking/src/NodePermissions.cpp +++ b/libraries/networking/src/NodePermissions.cpp @@ -53,8 +53,12 @@ QVariant NodePermissions::toVariant(QHash groupRanks) { values["permissions_id"] = _id; if (_groupIDSet) { values["group_id"] = _groupID; - if (groupRanks.contains(_rankID)) { + + if (!_rankID.isNull()) { values["rank_id"] = _rankID; + } + + if (groupRanks.contains(_rankID)) { values["rank_name"] = groupRanks[_rankID].name; values["rank_order"] = groupRanks[_rankID].order; } From b7a048c6eae264e8d42436357c2cb18e2f96cd54 Mon Sep 17 00:00:00 2001 From: vladest Date: Fri, 18 Aug 2017 21:44:44 +0200 Subject: [PATCH 12/14] Adopt clonable settings to new styling --- scripts/system/html/entityProperties.html | 30 +++++++++++------------ 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/scripts/system/html/entityProperties.html b/scripts/system/html/entityProperties.html index 24a8b2fee0..f94d339f84 100644 --- a/scripts/system/html/entityProperties.html +++ b/scripts/system/html/entityProperties.html @@ -133,20 +133,20 @@ -
- - @@ -681,4 +681,4 @@ - \ No newline at end of file + From 9dfc74de574c6eec004a60f79434a22fb9bc0112 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Mon, 21 Aug 2017 17:15:44 -0700 Subject: [PATCH 13/14] always write rank ID to variant when present --- libraries/networking/src/NodePermissions.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/libraries/networking/src/NodePermissions.cpp b/libraries/networking/src/NodePermissions.cpp index cc5df515aa..e94c43b6fb 100644 --- a/libraries/networking/src/NodePermissions.cpp +++ b/libraries/networking/src/NodePermissions.cpp @@ -53,8 +53,12 @@ QVariant NodePermissions::toVariant(QHash groupRanks) { values["permissions_id"] = _id; if (_groupIDSet) { values["group_id"] = _groupID; - if (groupRanks.contains(_rankID)) { + + if (!_rankID.isNull()) { values["rank_id"] = _rankID; + } + + if (groupRanks.contains(_rankID)) { values["rank_name"] = groupRanks[_rankID].name; values["rank_order"] = groupRanks[_rankID].order; } From a1e0f31cd8ca0546195cc141653f4901f393f7e1 Mon Sep 17 00:00:00 2001 From: beholder Date: Wed, 23 Aug 2017 00:24:09 +0300 Subject: [PATCH 14/14] fix for 'C1128: number of sections exceeded object file format limit' --- interface/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/interface/CMakeLists.txt b/interface/CMakeLists.txt index 4ed95b59f7..43e50c6d33 100644 --- a/interface/CMakeLists.txt +++ b/interface/CMakeLists.txt @@ -18,6 +18,7 @@ find_package(Qt5LinguistTools REQUIRED) find_package(Qt5LinguistToolsMacros) if (WIN32) + set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -bigobj") add_definitions(-D_USE_MATH_DEFINES) # apparently needed to get M_PI and other defines from cmath/math.h add_definitions(-DWINDOWS_LEAN_AND_MEAN) # needed to make sure windows doesn't go to crazy with its defines endif()