From 9f3a431c5d67e64411ac92b19fd59649142fbc21 Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Thu, 12 Apr 2018 14:12:52 -0700 Subject: [PATCH 1/3] minimum entity dimension --- libraries/entities/src/EntityItem.cpp | 3 ++- libraries/render-utils/src/Model.cpp | 4 +--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/libraries/entities/src/EntityItem.cpp b/libraries/entities/src/EntityItem.cpp index fe88f21a23..91ad581b32 100644 --- a/libraries/entities/src/EntityItem.cpp +++ b/libraries/entities/src/EntityItem.cpp @@ -1688,7 +1688,8 @@ void EntityItem::setScaledDimensions(const glm::vec3& value) { } void EntityItem::setUnscaledDimensions(const glm::vec3& value) { - glm::vec3 newDimensions = glm::max(value, glm::vec3(0.0f)); // can never have negative dimensions + const float MIN_ENTITY_DIMENSION = 0.01f; // this value cubed should == MIN_VOLUME in setMass + glm::vec3 newDimensions = glm::max(value, glm::vec3(MIN_ENTITY_DIMENSION)); if (getUnscaledDimensions() != newDimensions) { withWriteLock([&] { _unscaledDimensions = newDimensions; diff --git a/libraries/render-utils/src/Model.cpp b/libraries/render-utils/src/Model.cpp index 70f873734a..65b12ac0d4 100644 --- a/libraries/render-utils/src/Model.cpp +++ b/libraries/render-utils/src/Model.cpp @@ -182,9 +182,7 @@ const float SCALE_CHANGE_EPSILON = 0.0000001f; void Model::setScaleInternal(const glm::vec3& scale) { if (glm::distance(_scale, scale) > SCALE_CHANGE_EPSILON) { _scale = scale; - if (_scale.x == 0.0f || _scale.y == 0.0f || _scale.z == 0.0f) { - assert(false); - } + assert(_scale.x != 0.0f && scale.y != 0.0f && scale.z != 0.0f); simulate(0.0f, true); } } From b71a06a18ed75c0c6ba3e43d0e71069e3029f748 Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Fri, 13 Apr 2018 15:26:37 -0700 Subject: [PATCH 2/3] min dim = 1 mm --- libraries/entities/src/EntityItem.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libraries/entities/src/EntityItem.cpp b/libraries/entities/src/EntityItem.cpp index f50235e776..2034cb9a73 100644 --- a/libraries/entities/src/EntityItem.cpp +++ b/libraries/entities/src/EntityItem.cpp @@ -942,9 +942,9 @@ void EntityItem::setMass(float mass) { float volume = _volumeMultiplier * dimensions.x * dimensions.y * dimensions.z; // compute new density - const float MIN_VOLUME = 1.0e-6f; // 0.001mm^3 + const float MIN_VOLUME = 1.0e-9f; // 1mm^3 float newDensity = 1.0f; - if (volume < 1.0e-6f) { + if (volume < MIN_VOLUME) { // avoid divide by zero newDensity = glm::min(mass / MIN_VOLUME, ENTITY_ITEM_MAX_DENSITY); } else { @@ -1688,7 +1688,7 @@ void EntityItem::setScaledDimensions(const glm::vec3& value) { } void EntityItem::setUnscaledDimensions(const glm::vec3& value) { - const float MIN_ENTITY_DIMENSION = 0.01f; // this value cubed should == MIN_VOLUME in setMass + const float MIN_ENTITY_DIMENSION = 0.001f; // this value cubed should == MIN_VOLUME in setMass glm::vec3 newDimensions = glm::max(value, glm::vec3(MIN_ENTITY_DIMENSION)); if (getUnscaledDimensions() != newDimensions) { withWriteLock([&] { From 527d71c379b560d1dfe1a4865f5a42257ed80b19 Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Tue, 17 Apr 2018 10:58:54 -0700 Subject: [PATCH 3/3] CR --- libraries/entities/src/EntityItem.cpp | 8 +++----- libraries/entities/src/EntityItemPropertiesDefaults.h | 2 ++ 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/libraries/entities/src/EntityItem.cpp b/libraries/entities/src/EntityItem.cpp index 2034cb9a73..585b0b63eb 100644 --- a/libraries/entities/src/EntityItem.cpp +++ b/libraries/entities/src/EntityItem.cpp @@ -942,11 +942,10 @@ void EntityItem::setMass(float mass) { float volume = _volumeMultiplier * dimensions.x * dimensions.y * dimensions.z; // compute new density - const float MIN_VOLUME = 1.0e-9f; // 1mm^3 float newDensity = 1.0f; - if (volume < MIN_VOLUME) { + if (volume < ENTITY_ITEM_MIN_VOLUME) { // avoid divide by zero - newDensity = glm::min(mass / MIN_VOLUME, ENTITY_ITEM_MAX_DENSITY); + newDensity = glm::min(mass / ENTITY_ITEM_MIN_VOLUME, ENTITY_ITEM_MAX_DENSITY); } else { newDensity = glm::max(glm::min(mass / volume, ENTITY_ITEM_MAX_DENSITY), ENTITY_ITEM_MIN_DENSITY); } @@ -1688,8 +1687,7 @@ void EntityItem::setScaledDimensions(const glm::vec3& value) { } void EntityItem::setUnscaledDimensions(const glm::vec3& value) { - const float MIN_ENTITY_DIMENSION = 0.001f; // this value cubed should == MIN_VOLUME in setMass - glm::vec3 newDimensions = glm::max(value, glm::vec3(MIN_ENTITY_DIMENSION)); + glm::vec3 newDimensions = glm::max(value, glm::vec3(ENTITY_ITEM_MIN_DIMENSION)); if (getUnscaledDimensions() != newDimensions) { withWriteLock([&] { _unscaledDimensions = newDimensions; diff --git a/libraries/entities/src/EntityItemPropertiesDefaults.h b/libraries/entities/src/EntityItemPropertiesDefaults.h index 0e0c2994cd..d2ddd687dd 100644 --- a/libraries/entities/src/EntityItemPropertiesDefaults.h +++ b/libraries/entities/src/EntityItemPropertiesDefaults.h @@ -60,8 +60,10 @@ const float ENTITY_ITEM_DEFAULT_LIFETIME = ENTITY_ITEM_IMMORTAL_LIFETIME; const glm::vec3 ENTITY_ITEM_DEFAULT_POSITION = ENTITY_ITEM_ZERO_VEC3; const glm::quat ENTITY_ITEM_DEFAULT_ROTATION; const float ENTITY_ITEM_DEFAULT_WIDTH = 0.1f; +const float ENTITY_ITEM_MIN_DIMENSION = 0.001f; const glm::vec3 ENTITY_ITEM_DEFAULT_DIMENSIONS = glm::vec3(ENTITY_ITEM_DEFAULT_WIDTH); const float ENTITY_ITEM_DEFAULT_VOLUME = ENTITY_ITEM_DEFAULT_WIDTH * ENTITY_ITEM_DEFAULT_WIDTH * ENTITY_ITEM_DEFAULT_WIDTH; +const float ENTITY_ITEM_MIN_VOLUME = ENTITY_ITEM_MIN_DIMENSION * ENTITY_ITEM_MIN_DIMENSION * ENTITY_ITEM_MIN_DIMENSION; const float ENTITY_ITEM_MAX_DENSITY = 10000.0f; // kg/m^3 density of silver const float ENTITY_ITEM_MIN_DENSITY = 100.0f; // kg/m^3 density of balsa wood