Showing the changes to libraries/render-utils/src/Model.cpp (1 of 128 files). Show all
Unified · Split
| @@ -88,11 +88,7 @@ void Model::setScale(const glm::vec3& scale) { · 87 unmodified lines | |||
| 88 | } | 88 | } |
| 89 | 89 | ||
| 90 | void Model::setScaleInternal(const glm::vec3& scale) { | 90 | void Model::setScaleInternal(const glm::vec3& scale) { |
| 91 | float scaleLength = glm::length(_scale); | 91 | if (glm::distance(_scale, scale) > METERS_PER_MILLIMETER) { |
| 92 | float relativeDeltaScale = glm::length(_scale - scale) / scaleLength; | ||
| 93 | |||
| 94 | const float ONE_PERCENT = 0.01f; | ||
| 95 | if (relativeDeltaScale > ONE_PERCENT || scaleLength < EPSILON) { | ||
| 96 | _scale = scale; | 92 | _scale = scale; |
| 97 | initJointTransforms(); | 93 | initJointTransforms(); |
| 98 | } | 94 | } |
| @@ -485,8 +481,10 @@ void Model::setVisibleInScene(bool newValue, std::shared_ptr<render::Scene> scen · 386 unmodified lines | |||
| 485 | } | 481 | } |
| 486 | 482 | ||
| 487 | 483 | ||
| 488 | bool Model::addToScene(std::shared_ptr<render::Scene> scene, render::PendingChanges& pendingChanges) { | 484 | bool Model::addToScene(std::shared_ptr<render::Scene> scene, render::PendingChanges& pendingChanges, bool showCollisionHull) { |
| 489 | if (!_meshGroupsKnown && isLoaded()) { | 485 | |
| 486 | if ((!_meshGroupsKnown || showCollisionHull != _showCollisionHull) && isLoaded()) { | ||
| 487 | _showCollisionHull = showCollisionHull; | ||
| 490 | segregateMeshGroups(); | 488 | segregateMeshGroups(); |
| 491 | } | 489 | } |
| 492 | 490 | ||
| @@ -509,8 +507,12 @@ bool Model::addToScene(std::shared_ptr<render::Scene> scene, render::PendingChan · 16 unmodified lines | |||
| 509 | return somethingAdded; | 507 | return somethingAdded; |
| 510 | } | 508 | } |
| 511 | 509 | ||
| 512 | bool Model::addToScene(std::shared_ptr<render::Scene> scene, render::PendingChanges& pendingChanges, render::Item::Status::Getters& statusGetters) { | 510 | bool Model::addToScene(std::shared_ptr<render::Scene> scene, |
| 513 | if (!_meshGroupsKnown && isLoaded()) { | 511 | render::PendingChanges& pendingChanges, |
| 512 | render::Item::Status::Getters& statusGetters, | ||
| 513 | bool showCollisionHull) { | ||
| 514 | if ((!_meshGroupsKnown || showCollisionHull != _showCollisionHull) && isLoaded()) { | ||
| 515 | _showCollisionHull = showCollisionHull; | ||
| 514 | segregateMeshGroups(); | 516 | segregateMeshGroups(); |
| 515 | } | 517 | } |
| 516 | 518 | ||
| @@ -1067,7 +1069,6 @@ void Model::setGeometry(const QSharedPointer<NetworkGeometry>& newGeometry) { · 550 unmodified lines | |||
| 1067 | 1069 | ||
| 1068 | void Model::deleteGeometry() { | 1070 | void Model::deleteGeometry() { |
| 1069 | _blendedVertexBuffers.clear(); | 1071 | _blendedVertexBuffers.clear(); |
| 1070 | _rig->clearJointStates(); | ||
| 1071 | _meshStates.clear(); | 1072 | _meshStates.clear(); |
| 1072 | _rig->destroyAnimGraph(); | 1073 | _rig->destroyAnimGraph(); |
| 1073 | _blendedBlendshapeCoefficients.clear(); | 1074 | _blendedBlendshapeCoefficients.clear(); |
| @@ -1108,8 +1109,14 @@ AABox Model::getPartBounds(int meshIndex, int partIndex) { · 34 unmodified lines | |||
| 1108 | } | 1109 | } |
| 1109 | 1110 | ||
| 1110 | void Model::segregateMeshGroups() { | 1111 | void Model::segregateMeshGroups() { |
| 1111 | const FBXGeometry& geometry = _geometry->getFBXGeometry(); | 1112 | QSharedPointer<NetworkGeometry> networkGeometry; |
| 1112 | const std::vector<std::unique_ptr<NetworkMesh>>& networkMeshes = _geometry->getMeshes(); | 1113 | if (_showCollisionHull && _collisionGeometry && _collisionGeometry->isLoaded()) { |
| 1114 | networkGeometry = _collisionGeometry; | ||
| 1115 | } else { | ||
| 1116 | networkGeometry = _geometry; | ||
| 1117 | } | ||
| 1118 | const FBXGeometry& geometry = networkGeometry->getFBXGeometry(); | ||
| 1119 | const std::vector<std::unique_ptr<NetworkMesh>>& networkMeshes = networkGeometry->getMeshes(); | ||
| 1113 | 1120 | ||
| 1114 | // all of our mesh vectors must match in size | 1121 | // all of our mesh vectors must match in size |
| 1115 | if ((int)networkMeshes.size() != geometry.meshes.size() || | 1122 | if ((int)networkMeshes.size() != geometry.meshes.size() || |